gpt4 book ai didi

Java:将嵌套的 JSON 文件转换为单个、下一个的 ArrayList

转载 作者:行者123 更新时间:2023-12-01 20:05:19 24 4
gpt4 key购买 nike

我希望将嵌套的 JSON 文件转换为单个、下一个 Java ArrayList。

这是我的 JSON 文件的片段:

[
{
"dex": "001",
"name": "Bulbasaur",
"types": [
"Grass",
"Poison"
],
"attack": 128,
"defense": 118,
"HP": 111,
"catchRate": 0.2,
"fleeRate": 0.1,
"candy": 25,
"fastMoves": [
"Vine Whip",
"Tackle"
],
"chargeMoves": [
"Seed Bomb",
"Sludge Bomb",
"Power Whip"
]
},
{
"dex": "002",
"name": "Ivysaur",
"types": [
"Grass",
"Poison"
],
"attack": 155,
"defense": 151,
"HP": 143,
"catchRate": 0.1,
"fleeRate": 0.07,
"candy": 100,
"fastMoves": [
"Vine Whip",
"Razor Leaf"
],
"chargeMoves": [
"Sludge Bomb",
"Solar Beam",
"Power Whip"
]
}
]

这是我迄今为止所拥有的 Java:

JSONParser parser = new JSONParser();
JSONObject jsonObject = null;

try {
JSONArray jo = (JSONArray) parser.parse(new FileReader(filePath));

ArrayList<JSONObject> pokemons = new ArrayList<JSONObject>();

for (int i = 0; i < jo.size(); i++) {
JSONObject pokemon = (JSONObject) jo.get(i);
pokemons.add(pokemon);
}


return pokemons;

} catch (ParseException | IOException e) {
System.out.println("File not found.");
return null;
}
}

目前,我的 Java 允许访问任何字典项中的任何值。不过,我无法访问任何字典中任何列表中的任何项目(“types”、“fastMoves”、“chargeMoves”)。如何解析此信息以便访问这些列表的列表项?

例如,如何编辑我的主 ArrayList,以便在调用它时执行以下操作:pokemons.get(1).get(“types”).get(1) ,它会返回“Poison”

最佳答案

当您解析JSON时,JSON将被转换为Map中的JAVA对象。

就您而言,ArrayList 中的每个对象都是一个Map。您可以通过将 key 传递给 get 方法来访问所需字段。

JSONArray jo = (JSONArray) parser.parse(input);

ArrayList<JSONObject> pokemons = new ArrayList<JSONObject>();

for (int i = 0; i < jo.size(); i++) {
JSONObject pokemon = (JSONObject) jo.get(i);
pokemons.add(pokemon);
}

// now from here you can access the values by passing keys
// for dex: 001
JSONObject pok = pokemons.get(0); // contains whole dex: 001 object
// access values by keys
System.err.println(pok.get("dex")); // outputs : 001
// to access nested array
JSONArray jsonArray = (JSONArray) pok.get("types");
System.out.println(jsonArray); // will print ["Grass","Poison"]

for(Object str: jsonArray) {
System.out.println(str); // will print Grass
}

关于Java:将嵌套的 JSON 文件转换为单个、下一个的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58986732/

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