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

Hei*_*upp 27 json rest-assured rest-assured-jsonpath

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

[
  {"foo":1, "bar":2 , "baz":3 },
  {"foo":3, "bar":4 , "baz":5 }
]
Run Code Online (Sandbox Code Playgroud)

我如何访问bar元素,例如

expect().body("$[*].bar", hasItems(2,4)) 
Run Code Online (Sandbox Code Playgroud)

我尝试了一些我在这里找到的可能性以及StefanGössnerJsonPath页面上的一些可能性,但无论我尝试什么,我都会遇到异常.我的问题似乎直接来自试图访问该项目列表.

Joh*_*han 37

鉴于你有:

[
  {"foo":1, "bar":2 , "baz":3 },
  {"foo":3, "bar":4 , "baz":5 }
]
Run Code Online (Sandbox Code Playgroud)

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

then().body("bar",hasItems(2,4)) 
Run Code Online (Sandbox Code Playgroud)

要么

expect().body("bar",hasItems(2,4)) 
Run Code Online (Sandbox Code Playgroud)

如果您使用的是旧版API.


Mat*_*ias 27

约翰的答案是正确的,只是为了完整性:另一种方法来确保"酒吧"元素的确定是有保证的

expect().
    body("[0].bar", equalTo(2)).
    body("[1].bar", equalTo(4));
Run Code Online (Sandbox Code Playgroud)

  • 请注意这一点 - 元素的顺序可能并不总是相同. (6认同)