gpt4 book ai didi

java - 从 JSON 获取子数组

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

我从一个 json 文件中解析一些数据。这是我的 JSON 文件。

[
{

"topic": "Example1",
"contact": [
{
"ref": [
1
],
"corresponding": true,
"name": "XYZ"
},
{
"ref": [
1
],
"name": "ZXY"
},
{
"ref": [
1
],
"name": "ABC"
},
{
"ref": [
1,
2
],
"name":"BCA"
}
] ,

"type": "Presentation"
},
{

"topic": "Example2",
"contact": [
{
"ref": [
1
],
"corresponding": true,
"name": "XYZ"
},
{
"ref": [
1
],
"name": "ZXY"
},
{
"ref": [
1
],
"name": "ABC"
},
{
"ref": [
1,
2
],
"name":"BCA"
}
] ,

"type": "Poster"
}
]

我可以一个接一个地获取和存储数据。喜欢这个

JSONArray getContactsArray = new JSONArray(jsonObject.getString("contact"));
for(int a =0 ; a < getContactsArray.length(); a++)
{
JSONObject getJSonObj = (JSONObject)getContactsArray.get(a);
String Name = getJSonObj.getString("name");
}

1)现在,我的问题是有什么方法可以通过单个查询获取每个数组的所有 name 值。2) 我可以在 Array 中获取所有这些值吗?

如果我做错了什么,请纠正我。谢谢。

最佳答案

这里无法避免迭代,因为 org.json 和其他 Json 解析器也提供对对象的随机访问,但不提供对其属性的整体访问(作为集合)。因此,您不能查询诸如“所有联系人对象的所有名称属性” 之类的内容,除非您可能获得像 Gson 这样的 Json 解析器以这种方式解码它。

但是,当您绝对可以通过使用适当的 API 方法来避免不必要的对象强制转换来缩短解析时,仅仅避免 for 循环就太过分了。

JSONArray contacts = jsonObject.getJSONArray("contact");
String[] contactNames = new String[contacts.length()];
for(int i = 0 ; i < contactNames.length; i++) {
contactNames[i] = contacts.getJSONObject(i).getString("name");
}

关于java - 从 JSON 获取子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17670100/

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