Jmeter Json Extractor: выражение JSONPath работает на вычислителях, но не внутри jmeter?

#json #jmeter #extractor

#json #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 не равен null.
Он работает с несколькими онлайн-оценщиками json, от которых я получаю то, что ожидал:

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

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

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

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

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

Ответ №1:

Комментарии:

1. Большое спасибо за ваш ответ. Ну, на самом деле я уже использую Json Extractor в Jmeter, но все дело было в выражении Jsonpath. Потому что я пытался добавить в поисковую часть: @.idH[0]!=null, чтобы получить каждый элемент, где первый элемент массива idH не равен null. Я предполагаю, что в выражении Jsonpath вы не можете напрямую сформулировать отрицание, верно?