Jmeter后置处理器之JSON Extractor

一、使用场景

json extractor后置处理器用在返回格式为json的HTTP请求中,用来获取返回的json中的某个值。并保存成变量供后面的请求进行调用或断言等。

二、一般使用方法

步骤一:选择HTTP请求—>后置处理器—>JSON Extractor


json extractor.jpg

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

如下图,可以提取到返回的json格式的token的值。
json path.jpg

名称: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”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作,如:


JSON EXTRACTOR1.jpg

三、深度使用

3.1 获取返回值的数组中第X数值中的参数;

$.返回参数.数组名[X].参数名 (注意⚠️ X从0开始)


获取返回值数组中第1个数值中的参数.png

使用场景:
某个系统中表单中数据的排序操作。比如:
将第X个对象排序至第一个,校验排序操作是否正确。
此时可以获取排序后的第一个对象的某个属性的返回值,是否是执行排序的那一个即可。

用JSON Extractor用以上方法,获取第一个对象的返回值后,传给断言(响应断言或用BeanShell判断),判断是否符合预期。
比如下图:


屏幕快照 2019-04-14 15.13.29.png
3.2 获取返回值中的多个参数;

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


获取多个参数用分号分隔.png
3.3 获取返回值中,根据某个对象中的属性值获取同一对象的另一个属性值;

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


屏幕快照 2019-04-14 16.04.24.png

在线json 解析器地址 :
http://jsonpath.com/

json提取器常用语法.jpg

你可能感兴趣的:(Jmeter后置处理器之JSON Extractor)