通过RestAssured中的JsonPath访问匿名数组的元素

时间:2012-12-10 14:51:39

标签: json rest-assured rest-assured-jsonpath

我在JSON中有一个匿名数组,从以下服务返回:

[
  {"foo":1, "bar":2 , "baz":3 },
  {"foo":3, "bar":4 , "baz":5 }
]

如何访问bar元素,例如在

expect().body("$[*].bar", hasItems(2,4)) 

我尝试了一些我在这里找到的可能性以及StefanGössner的JsonPath page,但无论我尝试什么,我都会得到例外。我的问题似乎直接来自于尝试访问该项目列表。

2 个答案:

答案 0 :(得分:35)

鉴于你有:

[
  {"foo":1, "bar":2 , "baz":3 },
  {"foo":3, "bar":4 , "baz":5 }
]

您可以在Rest Assured中执行以下操作:

then().body("bar",hasItems(2,4)) 

expect().body("bar",hasItems(2,4)) 

如果您使用的是旧版API。

答案 1 :(得分:23)

Johan的答案是正确的,只是为了完整性:另一种方法是确保“bar”元素的确定

expect().
    body("[0].bar", equalTo(2)).
    body("[1].bar", equalTo(4));