【问题标题】:Extract JSON value based on condition using Jmeter from an HTML page使用 Jmeter 从 HTML 页面中提取基于条件的 JSON 值
【发布时间】:2023-04-09 07:53:01
【问题描述】:

我想使用 HTML 页面中的 jmeter 根据条件提取 JSON 值。

<!doctype html>
var list_data_obj = [{
   "list": [
     {
       "field1": "123",
       "field2": "xyz"
     },
     {
       "field1": "456",
       "field2": "abc"
     },
     {
       "field1": "789",
       "field2": "asdf"
     }
   ],
       "other1": "qwerty",
       "other2": "asdfgh"
 }]
</html>

已尝试如下 JSON 路径提取器,但返回 NULL

$.list[?(@.field2 == 'abc')].field1

谢谢

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    您将无法使用 JSON 路径提取器,因为响应数据不是有效的 JSON,它看起来像是 HTML 和 JavaScript 的混合体,因此您需要改用 Regular Expression Extractor

    相关的正则表达式如下所示:

    "field1": "(.+?)",\s.*"field2": "abc"
    

    参考资料:

    【讨论】:

      【解决方案2】:

      关键是首先使用正则表达式提取一个有效的json,然后对之前提取的json应用一个json路径提取器。

      您可以执行两步提取来执行此操作:

      • 首先通过使用"list": ([^^]+}\])、组$1$ 执行正则表达式提取器从页面中提取Json,
      • 然后通过选择 JMeter variable 对提取的变量执行 Json Extractor,然后应用您的 json 路径 $.list[?(@.field2 == 'abc')].field1

      有用的资源:

      【讨论】:

      • 另一个用户在这里选择了相同的解决方案:stackoverflow.com/questions/39238561/jmeter-json-parse
      • 如何执行第二步?如果我在应用 regEx 的同一 HTTP 请求下使用 json Extractor,则 JSON extractor 返回 NULL。
      • json 提取器必须应用于从之前的正则表达式提取器中提取的 JMeter 变量。这是链接它们的唯一方法。
      猜你喜欢
      • 2011-03-22
      • 1970-01-01
      • 2023-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 2020-02-11
      • 1970-01-01
      相关资源
      最近更新 更多