jmeter,提取符合特定条件的参数值

接口返回json格式如下:
现在要提取出courseId满足条件:inServiceTime=1status=0delFlag=0

{
:   "desc":null,
:   "success":true,
:   "code":"success",
:   "data":
:   {
:   :   "total":15,
:   :   "datas":
:   :   [
:   :   :   {
:   :   :   :   "courseId":455,
:   :   :   :   "inServiceTime":0,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":197,
:   :   :   :   "inServiceTime":0,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":467,
:   :   :   :   "inServiceTime":1,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":468,
:   :   :   :   "inServiceTime":1,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":437,
:   :   :   :   "inServiceTime":0,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":463,
:   :   :   :   "inServiceTime":1,
:   :   :   :   "status":1,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":196,
:   :   :   :   "inServiceTime":1,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":442,
:   :   :   :   "inServiceTime":1,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":202,
:   :   :   :   "inServiceTime":0,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":439,
:   :   :   :   "inServiceTime":1,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":438,
:   :   :   :   "inServiceTime":1,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":274,
:   :   :   :   "inServiceTime":1,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":435,
:   :   :   :   "inServiceTime":1,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":230,
:   :   :   :   "inServiceTime":1,
:   :   :   :   "status":0,
:   :   :   :   "delFlag":0,
:   :   :   },
:   :   :   {
:   :   :   :   "courseId":434,
:   :   :   :   "inServiceTime":1,
:   :   :   :   "status":1,
:   :   :   :   "delFlag":1,
:   :   :   }
:   :   ]
:   }
}

新增一个beanshell sampler

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.json.*;


String jsonContent = prev.getResponseDataAsString();//获取到上一个接口的返回json

JSONObject response = JSON.parseObject(jsonContent);//将接口返回json赋值给obj对象
JSONArray dataList = response.getJSONObject("data").getJSONArray("datas");
//取出datas数组,赋值给array

int length = dataList.size();//数组长度

vars.put("m_length",length.toString());//vars放进去的参数必须是String类型的

log.info("m_length==="+length.toString());

System.out.println("datalength:"+length);

String m_courseId="";//这里注意初始化必须是双引号
int inServiceTime=0;
int status=0;
int delFlag=0;
log.info("-----开始执行循环-----");
for(int i=0;i<length;i++){
    //将数组元素临时转化成obj对象
    //数组元素一个个取出来,取出inServiceTime、status、delFlag的值
	JSONObject jsonTemp = (JSONObject)dataList.getJSONObject(i);
	log.info("jsonTemp---->"+jsonTemp.toString());
	inServiceTime = jsonTemp.get("inServiceTime");
	status = jsonTemp.get("status");
	delFlag = jsonTemp.get("delFlag");
	log.info("inServiceTime---->"+inServiceTime);
	log.info("status---->"+status);
	log.info("delFlag---->"+delFlag);
	//如果满足条件,则取出对应的courseId,循环终止 
	if(inServiceTime==1&&status==0&&delFlag==0){
		m_courseId = jsonTemp.get("courseId").toString();
		break;
		}
		else{
			continue;
			}
	}
vars.put("m_courseId",m_courseId);

System.out.println("m_courseId:"+m_courseId);

在运行过程中,需要注意的是:
1、log信息查看:选项–打开Log Viewer
在这里插入图片描述
在这里插入图片描述
2、System.out.println的信息会输出到控制台
在这里插入图片描述
3、在脚本运行中,会遇到各种报错,log信息中可以查看到error信息,根据具体的错误,修改代码
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值