Jmeter Json 提取器:JSONPath 表达式适用于评估器但不适用于 jmeter 内部?

Jmeter Json Extractor: JSONPath Expression works on evaluators but not inside jmeter?

我在 json 从 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":[
         
      ]
   }
]

这是json路径:

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

目标是获取idH不为null的元素。 它适用于少数 json 在线评估者,我从他们那里得到了我期望的结果:

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

但它在其他一些在线评估器上也失败了,例如返回“JSONPath 发生错误”。

不幸的是,它不适用于 Jmeter 中的 Json 提取器,因为我得到了 json 的第一个元素,就像 json 路径本来是 $[ 0]

知道这里有什么问题吗? 在此先感谢您提供任何帮助、线索或想法。

为了以防万一,我使用 Apache JMeter (5.3)

如何使用 JSON Extractor which allows executing arbitrary JsonPath 查询

您应该能够像这样简单地获得您正在寻找的对象:

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

演示:

更多信息:API Testing With JMeter and the JSON Extractor