web-dev-qa-db-ja.com

RestAssuredのJsonPathを介して匿名配列の要素にアクセスする

次のようなサービスから返されたJSONの匿名配列があります。

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

bar要素にアクセスするにはどうすればよいですか。に

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

こことStefanGössnerの JsonPathページ で見つけたいくつかの可能性を試しましたが、何をしようとしても例外が発生します。私の問題は、そのアイテムのリストにアクセスしようとすることから直接生じているようです。

28
Heiko Rupp

あなたが持っていることを考えると:

[
  {"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を使用している場合。

36
Johan

ヨハンの答えは正しいですが、完全を期すためです。安心して「棒」要素を確認する別の方法は

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