首页 > 解决方案 > Jmeter解析并断言Json对象数组

问题描述

在 Jmeter 中,当尝试从 Json 对象中提取数据时,一切都很好并且效果很好,但是当我有 Json 对象数组时无法提取它。

结果是:

[{"id":1,"name":"test"},{"id":2,"name":"test2"}]

这是我的项目 JSON Extractor 和 JSR233 Assertion。在此处输入图像描述

在此处输入图像描述

在 Groovy 脚本中,我正在制作 log.info,但它没有捕获 JSON Extraxtor 中描述的变量值。

String id =  vars.get("id");
 log.info ("The example answer is " + id);
   if (id == ""){
        AssertionResult.setFailureMessage("The id is  null");
            AssertionResult.setFailure(true); 
    } 

请注意,如果 Json 响应看起来像这样,则 {"id":1,"name":"test"} 一切正常。

标签: jsonjmeter

解决方案


  1. 将您的JSON 路径表达式更改为如下所示:$..id. ..是一个深度扫描运算符,因此它将返回所有id属性值。
  2. 将匹配号更改为-1

它将导致以下变量:

id_1=1
id_2=2
id_matchNr=2

我不知道你到底需要断言什么,希望你能够自己修改你的 Groovy 脚本。

另请注意,自JMeter 4.0以来就有可用的JSON 断言测试元素,因此您不需要单独的提取器和断言元素。


推荐阅读