如何将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<Map>() {
        }.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<Map> parseJsonArrayToList(String jsonString) {
        List<Map> list = new ArrayList();
        List<Map> jsonList = gson.fromJson(jsonString, new TypeToken<List<Map>>() {
        }.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<Map> 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<Map> parseJsonArrayToList(String jsonString) throws JSONException {
        List<Map> 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,我们介绍了使用递归的方法进行转换。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/252220.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-13 17:34
下一篇 2024-12-13 17:34

相关推荐

  • 使用FFmpeg在Java中将MP3 URL转换为PCM

    本文介绍了使用FFmpeg在Java中将MP3 URL转换为PCM的具体步骤,以及相应代码示例。 一、准备工作 在使用FFmpeg之前,需要先安装FFmpeg,可以在官网(http…

    编程 2025-04-29
  • 如何将Oracle索引变成另一个表?

    如果你需要将一个Oracle索引导入到另一个表中,可以按照以下步骤来完成这个过程。 一、创建目标表 首先,需要在数据库中创建一个新的表格,用来存放索引数据。可以通过以下代码创建一个…

    编程 2025-04-29
  • Python如何将字符串1234变成数字1234

    Python作为一种广泛使用的编程语言,对于数字和字符串的处理提供了很多便捷的方式。如何将字符串“1234”转化成数字“1234”呢?下面将从多个方面详细阐述Python如何将字符…

    编程 2025-04-29
  • 如何将Java项目分成Modules并使用Git进行版本控制

    本文将向您展示如何将Java项目分成模块,并使用Git对它们进行版本控制。分割Java项目可以使其更容易维护和拓展。Git版本控制还可以让您跟踪项目的发展并协作开发。 一、为什么要…

    编程 2025-04-28
  • 如何将Python开发的网站变成APP

    要将Python开发的网站变成APP,可以通过Python的Web框架或者APP框架,将网站封装为APP的形式。常见的方法有: 一、使用Python的Web框架Django Dja…

    编程 2025-04-28
  • 如何将视频导出成更小的格式给IT前端文件

    本文将从以下几个方面介绍如何将视频导出成更小的格式,以便于在IT前端文件中使用。 一、选择更小的视频格式 在选择视频格式时,应该尽可能选择更小的格式,如MP4、WebM、FLV等。…

    编程 2025-04-28
  • JavaScript中使用new Date转换为YYYYMMDD格式

    在JavaScript中,我们通常会使用Date对象来表示日期和时间。当我们需要在网站上显示日期时,很多情况下需要将Date对象转换成YYYYMMDD格式的字符串。下面我们来详细了…

    编程 2025-04-27
  • 如何将 Python 列表变成字符串

    本文将从多个方面详细介绍如何将 Python 列表转换为字符串。列表是 Python 中常用的数据类型,但在实际开发中,我们通常需要将其转换为字符串形式进行操作。下面将从以下几个方…

    编程 2025-04-27
  • 如何将Python代码部署到服务器

    Python是一种高级编程语言,常被用于数据分析、机器学习、Web开发等不同领域的工作。但是,只有将Python代码部署到服务器上,才能让其真正发挥作用。 一、选择服务器 要将Py…

    编程 2025-04-27
  • python如何将数据转换为字符

    Python是一种高级编程语言,拥有简单易学、可读性强、语法简洁的特点,而在编程过程中,我们经常需要将数据转换为字符格式以便于输出、存储和传输。下面将从多个方面详细讲解python…

    编程 2025-04-27

发表回复

登录后才能评论