【问题标题】:Jmeter Json Extractor: JSONPath Expression works on evaluators but not inside jmeter?Jmeter Json Extractor:JSONPath 表达式适用于评估器,但不适用于 jmeter?
【发布时间】:2020-10-09 00:26:05
【问题描述】:

我遇到了从 json 中提取元素的 jsonpath 问题。

这是一个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 的第一个元素,就像 jsonpath 本来是 $[0]

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

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

【问题讨论】:

    标签: json jmeter extractor


    【解决方案1】:

    使用允许执行任意JsonPath 查询的JSON Extractor 怎么样

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

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

    演示:

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

    【讨论】:

    • 非常感谢您的回答。好吧,事实上我已经在 J​​meter 上使用了 Json Extractor,但这完全是关于 Jsonpath 表达式。因为我试图在搜索部分添加:@.idH[0]!=null 获取第一个 idH 数组元素不为空的每个元素。我想在 Jsonpath 表达式中你不能直接制定否定,对吗?
    猜你喜欢
    • 1970-01-01
    • 2021-01-07
    • 2016-07-22
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 2016-06-04
    相关资源
    最近更新 更多