You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JSON Simple解析含多类型元素的JSON数组数组?

使用JSON Simple解析嵌套JSON数组为嵌套ArrayList

完全可以实现这个需求!下面我会一步步展示如何用JSON Simple处理你的JSON结构,最终得到嵌套的ArrayList<ArrayList<Object>>集合,方便后续做类型转换。

第一步:确保引入JSON Simple依赖

如果用Maven管理项目,在pom.xml里加入以下依赖:

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

第二步:编写解析代码

假设你的JSON内容已经读取为字符串(也可以从本地文件读取),解析代码如下:

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import java.util.ArrayList;

public class JsonMatrixParser {
    public static void main(String[] args) {
        // 你的目标JSON内容
        String jsonStr = "{ \"matrix\" : [ [6,\"\",3,8,\"A\"], [\"\",\"B\",1,\"A\",9] ] }";

        JSONParser parser = new JSONParser();
        try {
            // 解析最外层的JSONObject
            JSONObject jsonObject = (JSONObject) parser.parse(jsonStr);
            // 获取"matrix"对应的外层JSONArray
            JSONArray outerJsonArray = (JSONArray) jsonObject.get("matrix");

            // 初始化用来存储结果的嵌套ArrayList
            ArrayList<ArrayList<Object>> matrixList = new ArrayList<>();

            // 遍历外层数组的每个元素
            for (Object outerItem : outerJsonArray) {
                // 外层每个元素都是一个内层JSONArray
                JSONArray innerJsonArray = (JSONArray) outerItem;
                ArrayList<Object> innerList = new ArrayList<>();

                // 遍历内层数组,把所有元素存入ArrayList<Object>
                for (Object innerItem : innerJsonArray) {
                    // JSON Simple会自动识别类型:整数是Long、空字符串是String、null值保留为null
                    innerList.add(innerItem);
                }

                matrixList.add(innerList);
            }

            // 打印验证结果
            for (ArrayList<Object> row : matrixList) {
                for (Object item : row) {
                    System.out.print(item + " [" + item.getClass().getSimpleName() + "] ");
                }
                System.out.println();
            }

            // 后续类型转换示例:把第一个元素转为Integer
            Integer firstNumber = ((Number) matrixList.get(0).get(0)).intValue();
            System.out.println("\n转换后的第一个整数:" + firstNumber);

        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

关键说明

  • JSON Simple会自动映射JSON类型:整数解析为Long(小数为Double)、字符串(包括空字符串)为String、null值保持为null
  • 我们通过两层遍历,把嵌套的JSONArray转换成ArrayList<ArrayList<Object>>,后续可以根据元素的实际类型做强制转换
  • 注意:将Number类型转为Integer时,需要先转成Number再调用intValue(),避免直接强转出现异常

运行代码后,输出会类似:

6 [Long] [String] 3 [Long] 8 [Long] A [String]
[String] B [String] 1 [Long] A [String] 9 [Long]

转换后的第一个整数:6

这样你就得到了想要的嵌套Object集合,后续可以根据业务需求逐个转换元素类型啦!

内容的提问来源于stack exchange,提问作者leverglowh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:59:25