如何在java中遍历json对象的json数组

Posted

技术标签:

【中文标题】如何在java中遍历json对象的json数组【英文标题】:How to loop through json array of json object in java 【发布时间】:2019-05-16 09:29:36 【问题描述】:

我正在尝试遍历 json 文件并找到特定 json 对象的值。 这是我的示例 json:


  "diagram":[
             "size":"width":30,"height":20,"color":"blue","id":1, 
             "color":"red","id":2,
             "size:"height":30", "id":3
            ]

我想做的是遍历文件并找到“id”元素。

我使用下面的代码将 JsonFile 转换为 JsonObject 并获取“图表”对象的值

JSONArray jsonArray = new JSONArray();
JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("D:/test.json"));
JSONObject jsonObj = (JSONObject) obj;
for(Iterator iterator = jsonObj.keySet().iterator(); iterator.hasNext();) 
      String diagramKey = (String) iterator.next();
      jsonArray.put(jsonObj.get(diagramKey));

通过上面的代码,我能够获取图表对象的值,并将其放入 jsonArray

当我尝试打印数组对象时,我得到的输出为

[[
  "size":"width":30,"height":20,"color":"blue","id":1, 
  "color":"red","id":2,
  "size:"height":30", "id":3
]]

jsonArray 长度为 1。

如何遍历上面的jsonArray并找到每个单独元素的id

【问题讨论】:

在您的输入中,图表是一个包含多个对象的数组。在您的输出中,您有一个这些数组的数组。到目前为止,您似乎正在处理一个图表,因此您的输出数组包含一个数组。你可以遍历那个内部数组,你会找到它包含的对象的三个 id 你的 json 格式不正确 【参考方案1】:
Verify your JSON too and check below code. 

public class MyTest 

    public static void main(String[] args) throws JSONException 
        String str = "\r\n" + 
                "   \"diagram\": [\r\n" + 
                "           \"size\": \r\n" + 
                "               \"width\": 30,\r\n" + 
                "               \"height\": 20\r\n" + 
                "           ,\r\n" + 
                "           \"color\": \"blue\",\r\n" + 
                "           \"id\": 1\r\n" + 
                "       ,\r\n" + 
                "       \r\n" + 
                "           \"color\": \"red\",\r\n" + 
                "           \"id\": 2\r\n" + 
                "       ,\r\n" + 
                "       \r\n" + 
                "           \"size\": \r\n" + 
                "               \"height\": 30\r\n" + 
                "           ,\r\n" + 
                "           \"id\": 3\r\n" + 
                "       \r\n" + 
                "   ]\r\n" + 
                "";

        JSONObject jo = new JSONObject(str);
        final JSONArray geodata = jo.getJSONArray("diagram");
        int arrLength = geodata.length();
        for(int i = 0; i< arrLength;i++) 
            jo  = geodata.getJSONObject(i);
            System.out.println(jo.get("id"));
        
    

【讨论】:

【参考方案2】:

您的 json 格式错误。 您始终可以使用在线工具验证您的 json 格式

https://jsonformatter.curiousconcept.com/ https://jsonformatter.org/

正确的json格式

  
   "diagram":[  
        
         "size":  
            "width":30,
            "height":20
         ,
         "color":"blue",
         "id":1
      ,
        
         "color":"red",
         "id":2
      ,
        
         "size":  
            "height":30
         ,
         "id":3
      
   ]

【讨论】:

以上是关于如何在java中遍历json对象的json数组的主要内容,如果未能解决你的问题,请参考以下文章

求jsp json数组遍历方法

怎样用for循环动态遍历json数组

如何将一个json数组类型的字符串转换为json数组,然后遍历数组取出json对象,最后在js中取出里面的属性?

Js 怎么遍历json对象所有key及根据动态key获取值

前端js把json字符串转json对象 java对象转json对象命令

如何在java中遍历json对象的json数组