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": ""
    }
  }
]
Другие вопросы по тегам