Jmeter Json Extractor: JSONPath Expression работает с оценщиками, но не внутри jmeter?

У меня проблема с jsonpath для извлечения элемента из json.

Вот пример json:

[
   {
      "idA":"104",
      "idB":"2941",
      "idC":"13316",
      "idE":"13361",
      "idF":"12758",
      "idG":"12865",
      "idH":[
         
      ]
   },
   {
      "idA":"104",
      "idB":"2941",
      "idC":"13317",
      "idE":"13362",
      "idF":"12759",
      "idG":"12866",
      "idH":[
         "10391"
      ]
   },
   {
      "idA":"104",
      "idB":"2941",
      "idC":"13318",
      "idE":"13363",
      "idF":"12760",
      "idG":"12867",
      "idH":[
         
      ]
   }
]

Вот путь jsonpath:

$[?(@.idH[0]!=null)]

Цель состоит в том, чтобы получить элемент, в котором idH не равно нулю. Он работает с несколькими онлайн-оценщиками json, от которых я получаю то, что ожидал:

[
    {
        "idA": "104",
        "idB": "2941",
        "idC": "13317",
        "idE": "13362",
        "idF": "12759",
        "idG": "12866",
        "idH": [
            "10391"
        ]
    }
]

Но он не работает и с некоторыми другими онлайн-оценщиками, возвращая, например, ошибку с JSONPath.

К сожалению, он не работает с экстрактором Json в Jmeter, потому что я получаю первый элемент json, например, если бы jsonpath был $ [0]

Любая идея, в чем проблема? Заранее благодарим за любую помощь, подсказку или идею.

Для информации на всякий случай я использую Apache JMeter (5.3)


person BenDev    schedule 08.10.2020    source источник


Ответы (1)


Как насчет использования JSON Extractor, который позволяет выполнять произвольные JsonPath запросы

Вы должны получить искомый объект так же просто, как:

$..[?(@.idH[0])]

Демо:

введите описание изображения здесь

Дополнительная информация: Тестирование API с помощью JMeter и JSON. Экстрактор

person Dmitri T    schedule 08.10.2020
comment
Большое спасибо за ответ. На самом деле я уже использую Json Extractor на Jmeter, но все дело в выражении Jsonpath. Потому что я пытался добавить в поисковую часть: @ .idH [0]! = Null Чтобы получить каждый элемент, в котором первый элемент массива idH не равен нулю. Я предполагаю, что в выражении Jsonpath вы не можете напрямую сформулировать отрицание, верно? - person BenDev; 09.10.2020