您的位置:

如何将JSONArray转换为Map集合

一、将JSONString转换为Map

在将JSONArray转换为Map之前,我们先可以将JSONString转换为Map,这样方便我们在后面处理JSONArray时使用。

我们可以使用Gson库的fromJson方法将JSONString转换为Map,代码示例:

import com.google.gson.Gson;
import java.lang.reflect.Type;
import java.util.Map;

public class JsonUtil {
    private static Gson gson = new Gson();

    /**
     * 将JSONString转换为Map
     */
    public static Map parseJsonToMap(String jsonString) {
        Type type = new TypeToken
   
    >() {
        }.getType();
        return gson.fromJson(jsonString, type);
    }
}

    
  

这里使用了Gson库的TypeToken来表示Map<String, Object>类型,使用gson.fromJson方法将JSONString转换为Map。

二、JSONString如何转换成Map集合

在得到Map之后,我们可以使用Map的put方法将JSONArray中的每个元素转换为Map集合。

假设JSONString的格式如下:

[
    {
        "name": "Tom",
        "age": 20
    },
    {
        "name": "Jerry",
        "age": 22
    }
]

那么我们可以使用下面的代码将JSONArray转换为Map集合:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JsonUtil {
    /**
     * 将JSONString转换为Map
     */
    public static List
   > parseJsonArrayToList(String jsonString) {
        List
    
     > list = new ArrayList<>();
        List
      
       
        > jsonList = gson.fromJson(jsonString, new TypeToken
        
         
          
           >>() { }.getType()); for (Map
           
            map : jsonList) { Map
            
             temp = new HashMap<>(); temp.putAll(map); list.add(temp); } return list; } }
            
           
          
        
       
     
   

我们先使用Gson库将JSONString转换为List<Map<String, Object>>,然后遍历该List中的每个Map并将其转换为新的Map加入到List中。

三、如何转化JSONObject为Map

有时候JSONObject可能也要转换成Map,可以使用类似的方法进行转换。代码示例:

import java.util.HashMap;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;

public class JsonUtil {
    /**
     * 将JSONObject转换为Map
     */
    public static Map parseJsonObjectToMap(JSONObject jsonObject) throws JSONException {
        Map
    map = new HashMap<>();
        for (String key : jsonObject.keySet()) {
            Object value = jsonObject.get(key);
            if (value instanceof JSONObject) {
                value = parseJsonObjectToMap((JSONObject) value);
            }
            map.put(key, value);
        }
        return map;
    }
}

   
  

我们使用了递归的方法,不断将JSONObject中的Map逐层转换成新的Map,最终返回转换完成后的Map。

四、如何使用Map集合

将JSONArray转换为Map之后,我们可以像使用普通的Map一般使用它,例如:

List
   > userList = JsonUtil.parseJsonArrayToList(jsonString);
for (Map
     user : userList) {
    String name = (String) user.get("name");
    int age = ((Double) user.get("age")).intValue();
    System.out.println("name:" + name + ", age:" + age);
}

    
   

这里我们使用了Map的get方法获取其中的元素,需要注意的是获取数字类型的元素需要进行强制类型转换。

五、处理复杂的JSONArray

上面的方法对于简单的JSONArray转换为Map集合已经足够,但是如果JSONArray中有嵌套的JSONArray或JSONObject就需要使用递归的方法进行转换。

以以下JSONString为例:

[
    {
        "name": "Tom",
        "age": 20,
        "hobbies": [
            "reading",
            "writing"
        ]
    },
    {
        "name": "Jerry",
        "age": 22,
        "hobbies": [
            "singing",
            "dancing",
            {
                "category": "sports",
                "name": "basketball"
            }
        ]
    }
]

我们需要使用递归的方法处理其中的嵌套元素。代码示例:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class JsonUtil {
    /**
     * 将JSONArray转换为Map
     */
    public static List
   > parseJsonArrayToList(String jsonString) throws JSONException {
        List
    
     > list = new ArrayList<>();
        JSONArray jsonArray = new JSONArray(jsonString);
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Map
       map = new HashMap<>();
            for (String key : jsonObject.keySet()) {
                Object value = jsonObject.get(key);
                if (value instanceof JSONArray) {
                    value = parseJsonArrayToList(value.toString());
                } else if (value instanceof JSONObject) {
                    value = parseJsonObjectToMap((JSONObject) value);
                }
                map.put(key, value);
            }
            list.add(map);
        }
        return list;
    }

    /**
     * 将JSONObject转换为Map
     */
    public static Map
       
        parseJsonObjectToMap(JSONObject jsonObject) throws JSONException { Map
        
         map = new HashMap<>(); for (String key : jsonObject.keySet()) { Object value = jsonObject.get(key); if (value instanceof JSONArray) { value = parseJsonArrayToList(value.toString()); } else if (value instanceof JSONObject) { value = parseJsonObjectToMap((JSONObject) value); } map.put(key, value); } return map; } }
        
       
      
     
   

递归方法中主要的区别就是处理JSONArray和JSONObject的方法。

六、总结

本文主要介绍了如何将JSONArray转换为Map集合。我们可以通过先将JSONString转换为Map,然后使用Map的put方法将JSONArray中的每个元素转换为Map集合。此外,为了处理复杂的JSONArray,我们介绍了使用递归的方法进行转换。

如何将JSONArray转换为Map集合

2023-05-18
如何将JsonArray转为Map

2023-05-20
Java编程实例:如何将JSON数组转换为Map

2023-05-16
android集合转json,android常用的集合

本文目录一览: 1、Android 中解析 JSON 2、Android 怎么把list转为json 3、android如何生成复杂的json 4、安卓Json --JSONArray --Map 类

2023-12-08
java对象和map相互转换(java将map转换为对象)

2022-11-10
java中将转成jsonarray,java写的代码怎么转换

本文目录一览: 1、java怎么将string数组转换为json 2、java中字符串怎么转jsonarray 3、java 怎么将string转为json数据 4、java怎么将json对象转换成j

2023-12-08
使用Java将JSONObject转换为Map

2023-05-16
core解析json的笔记(c json解析)

本文目录一览: 1、如何解析json中map数据 2、fasterxml.jackson.core.jsonparser.feature是哪个jar包的 3、spring mvc 怎么获取json 4

2023-12-08
如何将列表转换为集合?

2022-07-24
如何将JavaBean转换为Map?

2023-05-23
JsonArray转字符串

2023-05-19
Java Stream如何转换为Map

2023-05-21
json字符串转成map存入数据库(java map转化为j

本文目录一览: 1、怎么把json字符串转换成map 2、怎么把json字符串转换map? 3、JAVA中json字符串如何转化为map对象获取数据? 4、JAVA中json字符串如何转化为map对象

2023-12-08
c语言json转map(c# 对象转换json)

本文目录一览: 1、“JsonObject”如何转成“Map”? 2、怎么把json字符串转换成map 3、如何将返回的JSon字符串用MAP格式读取 “JsonObject”如何转成“Map”? 首

2023-12-08
从object转jsonarray的完全指南

2023-05-19
如何最快地将Json转为Map

2023-05-19
json字符转javamap(json字符串转换)

本文目录一览: 1、java在后台如何将前台传过来的json格式数据转换为map? 2、java json字符串转换Map 3、json字符串怎样转换成map 4、json字符串转java map 5

2023-12-08
从多个方面详解list转jsonarray

2023-05-19
JsonArray转String的详细阐述

2023-05-19
java对象转json顺序,将json对象转化为java对象

2022-11-26