Rest assured 使用hashmap列表访问嵌套循环中的对象

Rest assured 使用hashmap列表访问嵌套循环中的对象,rest-assured,Rest Assured,我有一个JSON响应,我想从中解析和提取数据。下面是JSON响应 [ { "od_pair":"7015400:8727100", "buckets":[ { "bucket":"C00", "original":2, "available":2 }, { "bucket":"A01", "original":76, "available":0 }, { "bucket":"B01",

我有一个JSON响应,我想从中解析和提取数据。下面是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_对和bucket的值,以及其中可用的值

@费尼奥的解决方案中有最好的方法。我重构的代码段如下所示:

List<HashMap<String, Object>> LegList = jsonPath.getList("$");

     for (HashMap<String, Object> singleLeg : LegList) {
        String OD_pair = (String) singleLeg.get("od_pair");

    //List<HashMap<String, Object>> bucketsList = jsonPath.param("j", j).getList("[j].buckets");
        List<HashMap<String, Object>> bucketsList = jsonPath.getList("singleLeg.buckets");

        for (HashMap<String, Object> singleBucket : bucketsList) {
            String BucketCode = (String) singleBucket.get("bucket");
            String Available = (String) 
singleBucket.get("available");
List LegList=jsonPath.getList($);
for(HashMap singleLeg:LegList){
String OD_对=(String)singleLeg.get(“OD_对”);
//List bucketsList=jsonPath.param(“j”,j).getList(“[j].bucket”);
List bucketsList=jsonPath.getList(“singleLeg.bucket”);
for(HashMap singleBucket:bucketsList){
String BucketCode=(String)singleBucket.get(“bucket”);
可用字符串=(字符串)
获取(“可用”);

我想验证我提取的bucketsList是否正确。之前我使用了带有参数j的for循环。但是使用这种更干净、更好的方法,我希望了解我提取bucketsList的方法是否正确。我成功地解决了这个问题。我知道我错在哪里。替换

 List<HashMap<String, Object>> bucketsList = jsonPath.getList("singleLeg.buckets");
List bucketsList=jsonPath.getList(“singleLeg.bucket”);
用这个

List<HashMap<String, Object>> bucketsList = (List<HashMap<String, Object>>) singleLeg.get("buckets");
List bucketsList=(List)singleLeg.get(“bucket”);
解决了我的问题,现在一切正常

因为我已经在singleLeg循环中,所以我需要调用的只是循环中的Bucket对象,而不是试图从根路径访问Bucket


非常感谢@Fenio,你的帮助在解决这个问题上是非常宝贵的。我将根据你提到的方法重构我的许多测试。它们肯定比for循环更干净、更易于维护和理解。我还建议进入
JsonPath
library。请放心使用这个来解析JSON:)@Fenio:您能帮我吗-