本文将详细介绍Java中实现JSONArray转Map的三种方法,其中包括使用JSONObject、Gson和Jackson三种方式实现。首先,我们需要使用以下的引入语句:
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.fasterxml.jackson.databind.ObjectMapper;
使用JSONObject实现JSONArray转Map,首先需要将JSONArray对象遍历,然后逐个构建JSONObject对象。最后,我们通过在循环中使用keySet()和get()方法将JSONObject对象的键值对存储在Map中。以下是示例代码:
public Map<String, Object> jsonArrayToMapByJSONObject(JSONArray jsonArray) {
Map<String, Object> map = new HashMap<>(16);
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
for (String key : jsonObject.keySet()) {
map.put(key, jsonObject.get(key));
}
}
return map;
}
使用Gson实现JSONArray转Map,只需要一行代码即可完成转换。我们只需要使用fromJson方法将JSONArray转换为Map即可。以下是示例代码:
public Map<String, Object> jsonArrayToMapByGson(JSONArray jsonArray) {
return new Gson().fromJson(jsonArray.toJSONString(), new TypeToken<Map<String, Object>>(){}.getType());
}
使用Jackson实现JSONArray转Map,需要先将JSONArray转换为String类型,然后将String类型转换为Map。以下是示例代码:
public Map<String, Object> jsonArrayToMapByJackson(JSONArray jsonArray) {
Map<String, Object> map = new HashMap<>(16);
try {
ObjectMapper objectMapper = new ObjectMapper();
map = objectMapper.readValue(jsonArray.toJSONString(), new TypeReference<Map<String, Object>>() {});
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return map;
}
我们可以使用以下的JSONArray作为示例,对三种方法进行测试:
JSONArray jsonArray = JSONArray.parseArray(
"[{\"name\":\"Jack\",\"age\":20,\"sex\":\"Man\"}," +
"{\"name\":\"Lucas\",\"age\":18,\"sex\":\"Man\"}," +
"{\"name\":\"Adam\",\"age\":22,\"sex\":\"Woman\"}]");
使用三种方法转换数组的结果如下:
使用JSONObject实现:
{name=Adam, age=22, sex=Woman}
使用Gson实现:
{name=Adam, age=22.0, sex=Woman}
使用Jackson实现:
{name=Adam, age=22, sex=Woman}
可以发现,三种方法均能够将JSONArray转换为Map,但在一些数据类型的转换上略有不同。因此,在实际开发中,需要根据需求选择不同的方式进行JSONArray转Map的实现。