Использование следующего объекта JSON из ответа API OData v4:
{
"@odata.context": "https://api.asdfasdf.com/",
"@odata.count": 2,
"value": [
{
"id": 123456789,
"name": "Random name"
},
{
"id": 15345,
"name": "Random name2"
}
]
}
Это работает для выбора объекта в массиве: $.value[?(@.id == 123456789)]
С помощью этого JSONPath я могуполучить значение свойства "@ odata.count": $.['@odata.count']
Но как написать JSONPath с выражениями, использующими "@ odata.count"?Например.При выборе только, если число больше 1, эти выражения не выполняются:
$.[('@odata.count' > 1)]
$.[?('@odata.count' > 1)]
$.[(@.['@odata.count'] > 1)]
... and a lot of other expressions
Я твердо верю, что я работаю на другой глубине json, чем я думаю, и соглашения об именовании свойства (испособ его выбора) сводит меня с ума.
Конечная цель - использовать выражение в утверждении SoapUI Testsuite.
Сравнение свойства "@ odata.count" в ответе на наш тестdata.
Редактировать: Исправлено json, благодаря удалению кавычек после числа, благодаря commenter.
И дополнительные результаты выражений, которые помогли мне найти решение:
Эти выражения приводят к '2':
$['@odata.count']
$..[0]['@odata.count']
Это выражение приводит к пустому массиву:
$..[?(@['@odata.count'] > 1)]
Это выражение приводит к значению 'null':
?($['@odata.count'] > 1)
Редактировать 2: Этот вопрос должен был быть задан несколько более общим, я думаю, это больше о том, "как использовать корневые свойства / корневые атрибуты / прямые дочерние элементы ответа в JSONPatчас".Подобный вопрос, который я нашел, с совершенно другим ответом: Запрос прямых дочерних элементов корневого элемента с помощью jsonpath