Jmeter后置处理器JSON Extractor
1、选择路径:对应的请求下 > 添加 > 后置处理器 > JSON Extractor
2、界面展示
各个字面意义:
1、Variable names: 自定义的参数名称,引用的时候用${}格式
2、JSON Path expressions: json表达式,根据表达式获取到对应的结果;提取式:$.+参数
3、Match Numbers:匹配数字(0代表随机,1代表第一个,-1代表所有)
4、Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值都保存,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作;
5、Default Values:找不到返的默认值,
提取相关例子:
{
"msg":null,
"rc":0,
"data":
{
"pageSize":10,
"pageNo":1,
"records":18,
"total":2,
"resultList":
[
{
"id":139,
"realName":"测试144",
"mobilePhone":"13141414141",
"sex":"女",
"age":10,
"maritalStatus":"未婚",
"identity":"513326200910276188",
"contactType":60,
"contactTypeName":"类别3",
"companyId":12,
"companyName":"华为1",
"tag":"",
"remark":"test备注",
"createdAt":"2019-08-13 16:39:38",
"bindUser":
[
3、通过JSON Path Expression找到需要的json值
查看结果树中切换类型为JSON Path Tester
要获取对应的id值,在JSON Path Expression中输入表达是,并且点击Test得到对应的结果
json表达式写法:
获取其中第一个id值: $.data.resultList[0].id
分析
首先分析json提取格式是【$.】后面跟参数,id在resultList中,resultList在data中,但是在resultList中有多层,resultList是数组,取第一个下标就是[0],即json表达式是$.data.resultList[0].id。
二、提取多个参数:
1、Variable names: 自定义的参数名称;多个变量用多个自定义变量,用英文分号分开;
2、JSON Path expressions: json表达式,根据表达式获取到对应的结果,多个的情况下用英文分号隔开
3、Match Numbers: 提取多个参数,同样用多个值,用英文分号隔开
4、Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值都保存,名为“变量名_ALL”,使用场景需要获取的值有多个,后面需要对这一组数据进行操作;
5、Default Values: 提取多个参数,同样用多个值,用英文分号隔开
使用场景:
新增客户管理后,要验证新增重复项系统处理,并且验证删除功能
即同时需要响应结果中的 用户id和身份证号
三、获取所有值
有时候需要取一个列表中的最大值,则可以使用Compute concatenation var(suffix_ALL)工具;生成的是以逗号隔开的
配置页面:
通过JSON Path Expression找到需要的json值
获取其最大值:
使用的时候,用${max_id}去使用
参考例子:
var base_versions=vars.get("cuntomer_id_2_ALL");
var version_list=base_versions.split(",");
var maxInNumbers = Math.max.apply(Math, version_list);
vars.put("max_id",maxInNumbers);