Как использовать «найти» в restassured для поиска в этой структуре вложенного массива?

Конечно, можно использовать функцию поиска JsonPath для поиска объекта. https://www.javadoc.io/doc/io.rest-assured/json-path/3.0.0/io/restassured/path/json/JsonPath.html.

Пример приведен по ссылке:

{
  "store": {
    "book": [
      {
        "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      {
        "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      {
        "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      {
        "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

и пример такого поиска:

List<Map> books = with(Object).get("store.book.findAll { book -> book.price >= 5 && book.price <= 15 }");

У меня немного более сложная структура json:

введите описание изображения здесь

и я хочу найти элемент json с id == 100770 (кстати, он уникален), то есть элемент, расположенный внутри 5-го элемента во внешнем массиве, и является 3-м элементом внутреннего массива

но у меня нет четко помеченного пути json, как в примере выше, так что мне следует использовать ниже, чтобы заменить xx?

get("xx.xx.find { xx -> xx.id == 100770 }")

может ли кто-нибудь дать какое-либо предложение?


person user1559625    schedule 12.04.2021    source источник
comment
Вы пробовали: List<Map> elements = with(Object).get("array.contents.findAll { contents-> contents.id== 100770 }");   -  person Lia    schedule 12.04.2021


Ответы (1)


Вы можете пойти по пути Groovy в этом типе обхода ответов

groovy_path = store.book.find {it.category = 'ссылка'}. название

вы можете поиграть с разными ключами ответа вместо ключа категории и ключа заголовка, чтобы получить разные значения из ответа.

Строка titile_of_book = response (). Extract (). JsonPath (). GetString (groovy_path);

System.out.println (titile_of_book); // Это напечатает --- ›Поговорки века

person Rahul Krishna    schedule 13.04.2021