一、使用场景
json提取器用于提取请求返回结果中的某个值或者某一组值,存储为指定的变量,用于后续的接口调用,使用方法比正则表达式提取器简单,所以如果接口响应数据为json格式的,我们优先使用json提取器。
二、使用方法
1、添加json提取器
取样器右键 > 添加 > 后置处理器 > 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 对应的值。
3.3 表达式验证
添加查看结果树,运行接口请求,查看结果树中找到需要提取的接口返回,上边选择JSON Path Tester,右侧会出现表达式的输入框,输入自己写好的表达式,点击test,看是否取到你想要的数据,取到则说明表达式正确,否则需要优化表达式。
4、一次提取多个字段
- 多个变量名,中间用“;”号隔开
- 提取表达式与变量名一一对应,中间用“;”号隔开
- 多个取值规则,中间用“;”号隔开
- 缺省值必须要填,一一对应,中间用“;”号隔开
- 匹配到的多个值,会自动命名为 key_1,key_2,...,key_n,后续可以直接调用
- 如果勾选了Compute concatenation var(suffix_ALL),会把所有匹配到的数据放在key_ALL这个字段中,也可以作为变量直接调用
- 会自动生成一个变量key_matchNr,标识匹配到的数据数量