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