Как взять из ответа ld+json типа Validatable response c помощью rest assured на java элемент массива

Прошу помочь советом, как получить из ответа ld+json типа Validatable response, c помощью rest assured на java, элемент массива. Вот есть такой ответ от апи (обозначим его response):

{
    "@context": {
        "weekend": "WorkDay/weekend"
    },
    "@id": "/api/work-days",
    "@type": "hydra:Collection",
    "hydra:member": [
        {
            "@id": "/api/work-days/146b9be0-d2ac-11ec-bc02-be1e467dc836",
            "@type": "WorkDay",
            "is_weekend": true
        },
           "@id": "/api/work-days/146d4abc-d2ac-11ec-bc02-be1e467dc836",
            "@type": "WorkDay",
            "day": "2022-01-02T00:00:00+05:00",
            "day_type": "weekend",
            "is_weekend": true
        },
...

Мне нужно получить значение элемента с селектором "hydra:member[0].@id" в тесте, написанном на rest assured на java. Я пыталась сделать с помощью функции get:

response.extract().jsonPath().get("hydra:member[0].@id");

В итоге падает ошибка с текстом

java.lang.IllegalArgumentException: Invalid JSON expression:

Script1.groovy: 1: Unexpected input: ':' @ line 1, column 32. hydra:member[0].'@id' ^

Пробовала перед двоеточием обратный слеш добавить - результат тот же. Падает именно на двоеточии после слова hydra. Мне важно, чтобы ответ был именно в формате ld+json, без ld Отсутствует поле @id в ответе.


Ответы (1 шт):

Автор решения: Ramiz

как Вы уже заметили, символы ':' и '@' имеют специальное значение и не могут быть использованы в упрощенном стиле. см https://restfulapi.net/json-jsonpath/ и http://docs.groovy-lang.org/latest/html/documentation/#_gpath

попробуйте в квадратных скобках и кавычках:

response.extract().jsonPath().get("$['hydra:member'][0].'@id'");
→ Ссылка