java - 动态读取多个不同名称的json数组

标签 java json

我有一个 JSON,其中有许多具有不同名称的数组,就像下面的 JSON 一样。

{
  "CA": [
    {
      "high": 5,
      "low": 3,
      "key": "ABPS"
    },
    {
      "high": 6,
      "low": 2,
      "key": "ABPO"
    }
  ],
  "EE": [
    {
      "high": 8,
      "low": 4,
      "key": "ABPS"
    },
    {
      "high": 7,
      "low": 2,
      "key": "ABPO"
    }
  ]
}

我正在尝试动态迭代 JSON 数组值,而不指定数组名称。

我可以使用下面的代码指定数组名称来读取数组,但是如何动态读取数组值而不指定每个数组的名称,因为我拥有的 JSON 文件有数千个数组。

package com.abc;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class JsonRead {

    private static final String filePath = "jsonTestFile.json";

    public static void main(String[] args) {

        try (FileReader reader = new FileReader(ClassLoader.getSystemResource(filePath).getFile())) {

            JSONParser jsonParser = new JSONParser();
            JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);

            // get an array from the JSON object
            JSONArray lang = (JSONArray) jsonObject.get("CA");

            Iterator i = lang.iterator();

            // take each value from the json array separately
            while (i.hasNext()) {
                JSONObject innerObj = (JSONObject) i.next();
                System.out.println("high " + innerObj.get("high") + " low " + innerObj.get("low")+ " key " + innerObj.get("key"));
            }

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}

最佳答案

这可能有帮助

for (Iterator iterator = jsonObject.keySet().iterator(); iterator.hasNext();) {
  String key = (String) iterator.next();
  JSONArray jArray = (JSONArray) jsonObject.get(key);
  }

关于java - 动态读取多个不同名称的json数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61610479/

相关文章:

javascript - 使用 JSON 文件作为 Javascript Web 应用程序的数据库

java - 如何使用 lambda 在对象中打印集合列表

java - Ant 映射器返回转义路径

javascript - 根据另一个数组的值设置数组中键的值

c - 嵌入式解析器内存使用 XML vs JSON vs?

linux - 适用于 Linux 的 JSON 命令行格式化工具

java - 让 GsonConverterFactory 解析某些字段?

java - ImageIO.read 阻止 PaintComponent 执行?

java Regex - 拆分但忽略引号内的文本?

java - Scala、Elasticsearch 新的 RestHighLevelClient 和 BulkProcessor