在重新授权中通过JsonPath访问匿名数组的元素

在重新授权中通过JsonPath访问匿名数组的元素,json,rest-assured,rest-assured-jsonpath,Json,Rest Assured,Rest Assured Jsonpath,我有一个JSON匿名数组,它是从如下服务返回的: [ {"foo":1, "bar":2 , "baz":3 }, {"foo":3, "bar":4 , "baz":5 } ] 如何访问条元素,例如 expect().body("$[*].bar", hasItems(2,4)) 我尝试了一些我在这里和Stefan Gössner的文章中发现的可能性,但无论我尝试什么,都会有例外。我的问题似乎直接来自尝试访问该项目列表。鉴于您有: [ {"foo":1, "bar":2 ,

我有一个JSON匿名数组,它是从如下服务返回的:

[
  {"foo":1, "bar":2 , "baz":3 },
  {"foo":3, "bar":4 , "baz":5 }
]
如何访问
元素,例如

expect().body("$[*].bar", hasItems(2,4)) 
我尝试了一些我在这里和Stefan Gössner的文章中发现的可能性,但无论我尝试什么,都会有例外。我的问题似乎直接来自尝试访问该项目列表。

鉴于您有:

[
  {"foo":1, "bar":2 , "baz":3 },
  {"foo":3, "bar":4 , "baz":5 }
]
您可以放心地执行以下操作:

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


如果您使用的是遗留API。

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

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

我知道它是无效的——这就是我在问题的第一行写“伪代码”的原因:-)小心点——元素的顺序可能并不总是相同的。没错,这就是使用“hasItems”的主要原因——你在不能期望特定(和固定)的情况下使用它订单。这是正确的,但如果订单发生变化,它肯定会失败。也许Hamcrest
containsInAnyOrder()
会帮助您。。。
expect().
    body("[0].bar", equalTo(2)).
    body("[1].bar", equalTo(4));