json - 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"}
一切正常。
解决方案
- 将您的JSON 路径表达式更改为如下所示:
$..id
...
是一个深度扫描运算符,因此它将返回所有id
属性值。 - 将匹配号更改为
-1
它将导致以下变量:
id_1=1
id_2=2
id_matchNr=2
我不知道你到底需要断言什么,希望你能够自己修改你的 Groovy 脚本。
另请注意,自JMeter 4.0以来就有可用的JSON 断言测试元素,因此您不需要单独的提取器和断言元素。
推荐阅读
- java - Android(Java):使用接口和更少重复的 DRYer 方法
- asp.net-core-mvc - 身份框架 ASP.NET Core 仅允许 @company.com 注册
- python - 来自谷歌示例代码错误的 pub_sub 操作缺少 1 个必需的位置参数:“回调”
- sql-server - SQL - 使用日期范围临时表和具有开始/结束合同日期的客户列表(第二个临时表)执行计数语句
- tensorflow - Tensorflow 未检测到 GPU - 添加可见 gpu 设备:0
- laravel - Laravel 中的断路取决于文件中定义的位置
- mvvm - 使用 MVVM (Xamarin.Froms ListView) 时是否应同时设置 ItemSource 和 BindingContext?
- javascript - Get selected check boxes values from table using Java script
- javascript - 渲染后如何替换角度组件标签?
- jmeter - Influxdb - 配置文件的 [graphite] 和 [http] 中的绑定地址之间的区别