【JMETER后置处理器--json提取器】

时间:2022-12-07 14:20:39

一、使用场景

json提取器用于提取请求返回结果中的某个值或者某一组值,存储为指定的变量,用于后续的接口调用,使用方法比正则表达式提取器简单,所以如果接口响应数据为json格式的,我们优先使用json提取器。

二、使用方法

1、添加json提取器

取样器右键 > 添加 > 后置处理器 > json 提取器

【JMETER后置处理器--json提取器】


2、参数说明

  • Variable names:保存的变量名,后面使用${Variable names}引用
  • JSON Path expressions:调试通过的json path表达式
  • Match Numbers:匹配数字(0代表随机,1代表第一个,-1代表所有)
  • Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”
  • Default Values:找不到时默认值时返回什么

3、表达式写法

3.1 绝对路径提取

$.节点名称.二级节点名称.三级节点

3.2 相对路径提取

相对路径提取:$..末梢节点名称

注:如果遇到key的value值为一个List,则使用.key[n]获取下标为n的元素,其中n为list中元素的编号(下标从0开始计算),例如 $..lists[2].typeDesc 表示从返回数据的lists中取下标为2的数据,然后再取typeDesc 对应的值。

【JMETER后置处理器--json提取器】

3.3 表达式验证

添加查看结果树,运行接口请求,查看结果树中找到需要提取的接口返回,上边选择JSON Path Tester,右侧会出现表达式的输入框,输入自己写好的表达式,点击test,看是否取到你想要的数据,取到则说明表达式正确,否则需要优化表达式。

【JMETER后置处理器--json提取器】

4、一次提取多个字段

  • 多个变量名,中间用“;”号隔开
  • 提取表达式与变量名一一对应,中间用“;”号隔开
  • 多个取值规则,中间用“;”号隔开
  • 缺省值必须要填,一一对应,中间用“;”号隔开

【JMETER后置处理器--json提取器】

  • 匹配到的多个值,会自动命名为 key_1,key_2,...,key_n,后续可以直接调用
  • 如果勾选了Compute concatenation var(suffix_ALL),会把所有匹配到的数据放在key_ALL这个字段中,也可以作为变量直接调用
  • 会自动生成一个变量key_matchNr,标识匹配到的数据数量