gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:54:42 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com