Json Path запрашивает без массива
В приведенном ниже JSON я пытаюсь найти условие. Где я хочу получить результат, только если OrderNumber не пустой или нулевой.
Условия, которые я пробовал Но не работал для меня:
> $..Item[?(@.OrderNumber)]
> $..Item[?(@.CurrentOrder.OrderNumber)]
Любые предложения будут оценены. Я проверяю свои запросы здесь https://jsonpath.curiousconcept.com/
{
"Response": {
"ID": "123456",
"Items": {
"Item": [
{
"CurrentOrder": {
"OrderNumber": "123",
"Status": ""
}
}
]
}
}
}
1 ответ
Решение
$..Item[?(@.CurrentOrder.OrderNumber)]
правильный JSONPath для вашего случая.
Известно, что используемый вами инструмент работает неправильно. Смотрите, например, этот вопрос.
У меня есть тест выше запрос с JSONPath Online Evaluator и для JSON
{
"Response": {
"ID": "123456",
"Items": {
"Item": [
{
"CurrentOrder": {
"OrderNumber": "123",
"Status": ""
}
},
{
"CurrentOrder": {
"OrderNumber": "456",
"Status": ""
}
},
{
"CurrentOrder": {
"Status": ""
}
}
]
}
}
}
это дает правильный результат:
[
{
"CurrentOrder": {
"OrderNumber": "123",
"Status": ""
}
},
{
"CurrentOrder": {
"OrderNumber": "456",
"Status": ""
}
}
]