从根为数组的jsonpath获取元素值

从根为数组的jsonpath获取元素值,json,rest-assured,rest-assured-jsonpath,Json,Rest Assured,Rest Assured Jsonpath,我有一个JSON响应,它的根是一个由1个或多个对象组成的数组。我想提取每个对象中一个元素的值 以下是JSON示例: [ { "od_pair":"7015400:8727100", "buckets":[ { "bucket":"C00", "original":2, "available":2 }, {

我有一个JSON响应,它的根是一个由1个或多个对象组成的数组。我想提取每个对象中一个元素的值

以下是JSON示例:

[  
   {  
      "od_pair":"7015400:8727100",
      "buckets":[  
         {  
            "bucket":"C00",
            "original":2,
            "available":2
         },
         {  
            "bucket":"A01",
            "original":76,
            "available":0
         },
         {  
            "bucket":"B01",
            "original":672,
            "available":480
         }
      ]
   },
   {  
      "od_pair":"7015400:8814001",
      "buckets":[  
         {  
            "bucket":"C00",
            "original":2,
            "available":2
         },
         {  
            "bucket":"A01",
            "original":40,
            "available":40
         },
         {  
            "bucket":"B01",
            "original":672,
            "available":672
         },
         {  
            "bucket":"B03",
            "original":632,
            "available":632
         },
         {  
            "bucket":"B05",
            "original":558,
            "available":558
         }
      ]
   }
]
我想访问每个对象中od_对的值

我尝试将根数组引用为
$
,但没有帮助

这是我编写的代码片段:

        List<Object> LegList = jsonPath.getList("$");
        int NoofLegs = LegList.size();
        System.out.println("No of legs :" +NoofLegs);
        for (int j=0; j<=NoofLegs;j++) {
            String OD_Pair = jsonPath.param("j", j).getString("[j].od_pair");
            System.out.println("OD Pair: " + OD_Pair);
            List<Object> BucketsList = jsonPath.param("j", j).getList("[j].buckets");

            int NoOfBuckets = BucketsList.size();
            System.out.println("no of Buckets: " + NoOfBuckets);
        }

有人能帮我一下吗?

您从
$
开始是对的。然而,您从特定的JSON中得到的是
列表
HashMap
,其中每个JSON对象都表示为一个
HashMap
。知道您可以获得如下所示的
HashMap
s列表:

List<HashMap<String, Object>> jsonObjectsInArray = path.getList("$");
for (HashMap<String, Object> jsonObject : jsonObjectsInArray) {
    System.out.println(jsonObject.get("od_pair"));
}
输出为:

7015400:8727100
7015400:8814001

希望有帮助

谢谢你。但是,我也有一个嵌套的bucket数组,我需要做什么才能访问bucket元素?让我也粘贴其他代码位,这样更清晰。我的要求是,对于每个od_对,我需要捕获每个桶码及其可用编号:@Mihir你能用给定的要求创建另一个问题吗?这对未来的读者来说会更清楚。谢谢。但是,我也有一个嵌套的bucket数组,我需要做什么才能访问bucket元素?让我也粘贴其他代码位,这样更清晰。我的要求是对于每个od_对,我需要捕获每个桶代码及其可用编号。我将把整个代码粘贴到一个新的注释中,供您参考。如果你能在这方面指导我,好吗?@Mihir我可以,但我建议你问一个新问题@费尼奥:提出了一个新问题。
7015400:8727100
7015400:8814001