В restassurred, как получить конкретное значение атрибута, используя значение его родственного атрибута в json-ответе api?

Ниже мой ответ {"id": 123, "name": "text1"}, {"id": 456, "name": "text2"}]

Я хочу найти значение идентификатора, имя которого - text2


person Rahul D    schedule 12.04.2020    source источник
comment
JsonPath FTW - $..[?(@.name == 'text2')].id, проверено с помощью валидатора JSONPath   -  person Wilfred Clement    schedule 12.04.2020
comment
@WilfredClement Rest-Assured не использует json-path. Это не сработает. Безопасное использование Groovy's GPath   -  person Fenio    schedule 13.04.2020


Ответы (1)


Поскольку Rest Assured использует GPath Groovy, вы можете использовать следующее выражение:

String json = "[{ \"id\": 123, \"name\": \"text1\" }, { \"id\": 456, \"name\": \"text2\" }]";
JsonPath path = JsonPath.from(json);
System.out.println(path.get("find { it.name == 'text2' }.id"));

Приведенный выше код вернет 456

Он будет работать только в том случае, если JSON начинается с массива []

person Fenio    schedule 13.04.2020