如何迭代json响应

时间:2017-01-07 14:28:41

标签: json groovy

我需要一些关于尝试从JSON响应中查找值列表的指导。

我有一个如下所示的JSON:

"reviewRatingCount":    [
            {
         "id": 1,
         "name": "xxx",
         "value": x,
         "percentage": 8.49
      },
            {
         "id": 2,
         "name": "xxx",
         "value": x,
         "percentage": 11.19
      },
            {
         "id": 3,
         "name": "xxx",
         "value": x,
         "percentage": 22.74
      }
...

现在我已经进行了检查以确保' ReviewRatingCount'不等于null:

def reviewratingcount = json.reviewratingcount
assert reviewratingcount != null

我想要做的是确保这个评论中的ID' reviewRatingCount'等于1,2,3。所以实际上我希望它遍历reviewRatingCount中的id并确保所有id包含正确的值。这是如何在groovy脚本中应用的,所以我不仅可以将它应用于此示例,还可以应用于其他检查,例如' name'?

谢谢。

1 个答案:

答案 0 :(得分:4)

无需迭代,请使用*运算符:

import groovy.json.JsonSlurper

def json = '''{"reviewRatingCount":    [
            {
         "id": 1,
         "name": "Terrible",
         "value": 214,
         "percentage": 8.49
      },
            {
         "id": 2,
         "name": "Poor",
         "value": 282,
         "percentage": 11.19
      },
            {
         "id": 3,
         "name": "Average",
         "value": 573,
         "percentage": 22.74
      }
]}'''

def slurped = new JsonSlurper().parseText(json)
assert slurped.reviewRatingCount*.id == [1, 2, 3]