Jmeter后置处理器之JSON Extractor
一、使用场景
json extractor后置处理器用在返回格式为json的HTTP请求中,用来获取返回的json中的某个值。并保存成变量供后面的请求进行调用或断言等。
二、一般使用方法
步骤一:选择HTTP请求—>后置处理器—>JSON Extractor

步骤二:在查看结果树中,通过json path expression找到需要的json值。“$.data.json”

名称:json后置表达式的名称,标识作用,建议使用有意义的名字
Variable names:保存的变量名,后面使用${Variable names}引用
JSON Path expressions:上一步中调试通过的json path表达式
Match Numbers:匹配数字(0代表随机,1代表第一个,-1代表所有)
Default Values:找不到时默认值,一般设置为NOT FOUND
Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作,如:

三、深度使用
3.1 获取返回值的数组中第X数值中的参数;
$.返回参数.数组名[X].参数名 (注意⚠️ X从0开始)

使用场景:
某个系统中表单中数据的排序操作。比如:
将第X个对象排序至第一个,校验排序操作是否正确。
此时可以获取排序后的第一个对象的某个属性的返回值,是否是执行排序的那一个即可。
用JSON Extractor用以上方法,获取第一个对象的返回值后,传给断言(响应断言或用BeanShell判断),判断是否符合预期。
比如下图:

3.2 获取返回值中的多个参数;
JSON Extractor 支持获取多个返回参数,用英文输入的分号分隔。

3.3 获取返回值中,根据某个对象中的属性值获取同一对象的另一个属性值;
$..[?(@.key1==value1)].key2(所取的值为:在返回的所有对象中,有一个属性key1为value1的对象,这个对象的另一个Key2)。
如下图:取的值就是所有对象中,"cardCode":"300353058922037248"对应的另一个属性 "cardName"的值。
