JMeter 实现获取 Response Json 转换为变量后循环查询

1 BeanShell 后置处理器

  • 用 BeanShell 后置处理器获取,并处理 Json

(1)Json 示例

{
    "data":[
        {
            "createTime":1610088888000,
            "creator":"WX",
            "currentInsts":[
                {
                    "bizDate":"20210112",
                    "instanceId":1810177,
                    "status":"SUCCESS"
                },
                {
                    "bizDate":"20210110",
                    "instanceId":1810111,
                    "status":"SUCCESS"
                },
                {
                    "bizDate":"20210108",
                    "instanceId":1810091,
                    "status":"SUCCESS"
                },
                {
                    "bizDate":"20210107",
                    "instanceId":1810086,
                    "status":"SUCCESS"
                },
                {
                    "bizDate":"20210107",
                    "instanceId":1810083,
                    "status":"SUCCESS"
                }
            ],
            "expireDate":"20211217",
            "exportId":5088549,
            "scheduleTypeEnum":"CRON"
        }
    ],
    "host":"100.88.148.76",
    "success":true,
    "traceId":"6458944c161059128917180866465"
}

(2)代码

import com.alibaba.fastjson.*;

//获取请求的返回值
String response_data = prev.getResponseDataAsString();
//日志打印获取请求的返回值
log.info("——————————————| response_data:"+response_data+"|——————————————");
//将String类型的返回值构造成JSONObject对象
JSONObject data_obj = JSON.parse(response_data);
//日志打印data_obj值
log.info("——————————————| ata_obj:"+data_obj+"|——————————————");

//将data转成JSONObject类型
JSONArray jsonData = data_obj.getJSONArray("data");

//日志打印jsonData值
log.info("——————————————| jsonData:"+jsonData+"|——————————————");

//获取作为下一个请求post的参数值item(获取字符串)
// item = jsonData.get("item").toString();

//JSONArray currentInstsList = jsonData.get("currentInsts");



JSONArray currentInstsList = jsonData.get(0).getJSONArray("currentInsts");
log.info("——————————————| currentInstsList:"+currentInstsList+"|——————————————");

//获取item字符串的长度
//int len = item.length();

//获取item数组的长度
int currentInstsListlen = currentInstsList.size();


log.info("——————————————| currentInstsListLen:"+currentInstsListlen.toString()+" |——————————————");
vars.put("——————————————| currentInstsListlen",currentInstsListlen.toString()+" |——————————————");

//int i = 0;
//
//String bizDate=currentInstsList.get(i).get("bizDate").toString();
//	log.info("bizDate---->"+ "" +i+ "+"+bizDate );

for(int i=0;i<currentInstsListlen;i++){

	String bizDate=currentInstsList.get(i).get("bizDate").toString();
	log.info("——————————————| bizDate:"+bizDate+" |——————————————");
	
	String instanceId=currentInstsList.get(i).get("instanceId").toString();
	log.info("——————————————| instanceId:"+instanceId+" |——————————————");

	vars.put("bizDate"+i,bizDate);
	
	vars.put("instanceId"+i,instanceId);
}

2 循环空控制器

  • 实现 for 或者 while 循环
    在这里插入图片描述在这里插入图片描述

3 取样器

(1)用户自定义变量

  • 用于对 List 下标赋初始值在这里插入图片描述

(2)HTTP 取样器

  • 需要使用的接口
  • 使用嵌套变量:${__V(外层变量${内层变量})}(i=1,bizDate=2,组合后${__V(bizDate${i})}=21)在这里插入图片描述

(3)BeanShell 取样器

  • 用于控制 List 数组下标自增在这里插入图片描述
int a1 = Integer.valueOf(${i});
int i = a1+1;
vars.put("i",i.toString());
log.info("——————————————| i:"+i.toString()+" |——————————————");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值