详解Java实现JSONArray转Map的三种实现方式

本文将详细介绍Java中实现JSONArray转Map的三种方法,其中包括使用JSONObject、Gson和Jackson三种方式实现。首先,我们需要使用以下的引入语句:

详解Java实现JSONArray转Map的三种实现方式

本文将详细介绍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

使用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

使用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

使用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的实现。

本文标题为:详解Java实现JSONArray转Map的三种实现方式

基础教程推荐