JMeter json提取器提取到的响应结果里参数顺序和实际响应结果里不一致
http请求的响应结果
{
"msg": "年龄计算",
"code": "200",
"constellation": "处女座",
"animal": "猪",
"age": 3
}
提取到的
fresult={"msg":"年龄计算","animal":"猪","code":"200","constellation":"处女座","age":3}
参考GPT和自己的思路:这个问题可能是由于Java的HashMap是无顺序的,并且在处理JSON响应结果时,JMeter会使用HashMap来存储键值对。这就意味着提取过程中参数的顺序可能与实际响应结果中的顺序不同。 我们可以使用JSON提取器的"Match No."属性来更改匹配模式和结果的顺序。同时,我们也可以使用JSR223提取器来编写自定义代码来处理JSON响应结果中的数据,并按照特定的顺序使用JMeter变量存储它们。
不知道你这个问题是否已经解决, 如果还没有解决的话:在jmeter中添加json提取器
,在json提取器中变量名称中填写多个变量值,json表达式同样填写多个表达式,且json表达式和变量值一一对应,中间用分号隔开,特别注意的是在json提取器中的Default Values
中的值需要填写,变量值是几个,Default Values
就需要写几个默认值,同样用分号隔开,内容自己根据实际情况来定。
上面的提取方式有个问题,在用*
号的时候,配合下面的0,表示的是提取结果中的随机一个,这样一来就会出现counterCode
和counterName
不是同一条数据返回来的,为了解决这个问题,可以添加前置处理器用户参数
,在这里定义变量,然后再json提取器中使用变量即可解决
处理之后,可以在json提取器中引用变量
至此,json提取器提取多个变量值成功完成