JMeter响应结果和json提取的结果不一致

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变量存储它们。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/646686
  • 你也可以参考下这篇文章:Jmeter录制app中的https请求操作步骤&一直没有网络的问题的解决方案
  • 除此之外, 这篇博客: jmeter提取结果中的多个值作为变量中的 json提取器提取多个结果值 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在jmeter中添加json提取器,在json提取器中变量名称中填写多个变量值,json表达式同样填写多个表达式,且json表达式和变量值一一对应,中间用分号隔开,特别注意的是在json提取器中的Default Values中的值需要填写,变量值是几个,Default Values就需要写几个默认值,同样用分号隔开,内容自己根据实际情况来定。
    在这里插入图片描述
    上面的提取方式有个问题,在用*号的时候,配合下面的0,表示的是提取结果中的随机一个,这样一来就会出现counterCodecounterName不是同一条数据返回来的,为了解决这个问题,可以添加前置处理器用户参数,在这里定义变量,然后再json提取器中使用变量即可解决
    在这里插入图片描述
    处理之后,可以在json提取器中引用变量
    在这里插入图片描述
    至此,json提取器提取多个变量值成功完成


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^