java - 从 JSON 获取子数组

标签 java json

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

相关文章:

java - 与Java的级联同步

java - JDBC 检查连接是否可以保证它将无错误地提交

php - 尝试让 json_encode 返回行名称以及 mysql 表中的数据

json - 如何在golang中使用变量设置json标签?

java仿射变换正确顺序

java - 找出图像的扩展名(如果该图像没有任何扩展名)

json - 如何检查嵌套类型elasticsearch对象中的缺失键?

json - 在 Swift 2 中搜索字典对象数组

javascript - Vue.js (Nuxt) 返回 JSON 数据

java - 从另一个 JVM 加载 JVM 中现有的类对象