gpt4 book ai didi

java - 解析 json 数组内的 json 数组时遇到问题

转载 作者:行者123 更新时间:2023-12-02 13:10:05 24 4
gpt4 key购买 nike

我在解析 java 中的简单 json 时遇到问题。这是示例 json。

[
{
"politics": [
{
"type": "admin2",
"friendly_type": "country",
"name": "United States",
"code": "usa"
},
{
"type": "admin6",
"friendly_type": "county",
"name": "Gratiot",
"code": "26_057"
},
{
"type": "constituency",
"friendly_type": "constituency",
"name": "Eighth district, MI",
"code": "26_08"
},
{
"type": "admin6",
"friendly_type": "county",
"name": "Clinton",
"code": "26_037"
},
{
"type": "admin4",
"friendly_type": "state",
"name": "Michigan",
"code": "us26"
},
{
"type": "constituency",
"friendly_type": "constituency",
"name": "Fourth district, MI",
"code": "26_04"
}
],
"location": {
"latitude": 43.111976,
"longitude": -84.71275
}
}
]

现在这给了我正确的 json 索引。

JSONParser parser = new JSONParser();
Object obj = parser.parse(output);
JSONArray array = (JSONArray)obj;
String jsonobj = array.get(0).toString();
{"politics":[{"code":"usa","name":"United States","type":"admin2","friendly_type":"country"},{"code":"26_057","name":"Gratiot","type":"admin6","friendly_type":"county"},{"code":"26_08","name":"Eighth district, MI","type":"constituency","friendly_type":"constituency"},{"code":"26_037","name":"Clinton","type":"admin6","friendly_type":"county"},{"code":"us26","name":"Michigan","type":"admin4","friendly_type":"state"},{"code":"26_04","name":"Fourth district, MI","type":"constituency","friendly_type":"constituency"}],"location":{"latitude":43.111976,"longitude":-84.71275}}

但我似乎无法从中获得我想要的属性。

JSONObject obj1 = new JSONObject(jsonobj);
String n = obj1.getString("admin4");
System.out.println(n);

我从这个 json 中需要的只是密歇根州。我哪里错了?非常感谢您的帮助。

最佳答案

首先,array.get(0) 将从主数组中获取第一个元素。第一个元素是一个 JSON 对象,具有两个属性 politicslocation。您似乎对 politics 属性的数组值内的值感兴趣。您必须使用此 ((JSONArray)((JSONObject)array.get(0)).get("politics")) 来获取该数组。

其次,admin4 不是一个属性,它实际上是 type 属性的值。您必须循环遍历数组才能找到它。

这是一个完整的示例:

JSONParser parser = new JSONParser();
Object obj = parser.parse(output);
JSONArray array = (JSONArray)obj;
JSONArray politics = ((JSONObject)array.get(0)).get("politics"));
JSONObject obj = null;
for(int i = 0; i < politics.size(); i++){
if(((JSONObject)politics.get(i)).getString("type").equals("admin4")){
obj = ((JSONObject)politics.get(i));
}
}
if(obj != null){
// Do something with the object.
}

您似乎正在使用simple json 库。我不记得它是 .get("politics") 还是 .getJSONObject("politics")。我的示例中的方法名称可能还有其他错误。

关于java - 解析 json 数组内的 json 数组时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43992451/

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