当前位置: 首页 > news >正文

记录Jmeter 利用BeanShell 脚本解析JSON字符串

下载org.json包(文档说明)

#下载地址
https://www.json.org/
# github 地址
https://github.com/stleary/JSON-java
# api 文档说明
https://resources.arcgis.com/en/help/arcobjects-java/api/arcobjects/com/esri/arcgis/server/json/JSONObject.html

BeanShell脚本

import org.json.JSONObject;
try {
  	   //接受登录返回json字符串进行处理
        String jsonResponse = prev.getResponseDataAsString();
        //log.info("Response: " + jsonResponse);
         //去除外层双引号
        if (jsonResponse.startsWith("\"") && jsonResponse.endsWith("\"")) {
            jsonResponse = jsonResponse.substring(1, jsonResponse.length() - 1);
        }
        //转义处理
        jsonResponse = jsonResponse.replace("\\\"", "\"");
        //清理隐藏字符
        jsonResponse = jsonResponse.replaceAll("^\uFEFF", "").trim();
        byte[] resultByt = jsonResponse.getBytes();
		//回写设置结果
		prev.setResponseData(resultByt);
       // log.info("Response_end: " + jsonResponse);
        JSONObject json = new JSONObject(jsonResponse);
       // log.info("json: " + json);
        String token = json.getString("Token");
        log.info("auth_token: " + token);
        // 设置gToken变量
        vars.put("auth_token", token);

        //log.info("获取auth_token: " +  vars.get("auth_token"));
         // 作为全局变量
        props.put("g_auth_token", token);
        //log.info("获取g_auth_token: " +  props.get("g_auth_token"));

    } catch (Exception e) {
       //解析错误,输出错误信息
       log.error("JSON解析错误: " +  e.getMessage());
  }

结果
取变量
取变量结果

使用脚本断言


try{
	  //接受登录返回json字符串进行处理
        String jsonResponse = prev.getResponseDataAsString();
        log.info("Response_断言: " + jsonResponse);
	//状态码断言
	log.info("状态码:" + ResponseCode);
	if(ResponseCode.equals("200")){ 
		Failure=false;	// 表示断言成功
	}
	else{
		Failure=true;	// 表示断言失败
		FailureMessage="响应状态码非200";  // 自定义的失败信息
	}
	
} catch (Exception e) {
       //解析错误,输出错误信息
       log.error("JSON解析错误: " +  e.getMessage());
  }
 

断言结果

相关文章:

  • MAC安装docker 后提示com.docker.vmnetd”将对您的电脑造成伤害
  • MySQL 语句解析json字符串
  • 基于SpringBoot的“交通旅游订票系统”的设计与实现(源码+数据库+文档+PPT)
  • 【笔记】在windows使用docker管理mysql版本
  • JS—异步编程:3分钟掌握异步编程
  • cordova android12+升级一些配置注意事项
  • 3. 轴指令(omron 机器自动化控制器)——>MC_CamOut
  • 【Mac】npm error Error: EACCES: permission denied, mkdir‘/Users/...
  • 从零到一:ESP32与豆包大模型的RTC连续对话实现指南
  • 【Git 暂存操作指南2】
  • 网盘解析工具1.3.0,修改了一些bug,建议更新到此版本
  • 发票管理自动化-发票查验接口让财务告别繁琐的核验流程
  • Android面试总结之Glide源码级理解
  • Android 动态设置默认Launcher(默认应用 电话-短信-浏览器-主屏幕应用))
  • MCP Server 实现一个 天气查询
  • 【C语言】分支与循环(上)
  • linux打包前端vue,后端springboot项目
  • CentOS 7 挂载与卸载文件系统笔记
  • 物联网中的物模型是什么意思,在嵌入式软件开发中如何体现?
  • 树——构造和遍历问题——面试专题
  • 陈宝良 高寿仙 彭勇︱明清社会的皇权、商帮与市井百态
  • 会计江湖|年报披露关注什么:独董给出的“信号”
  • 韩德洙成为韩国执政党总统大选候选人
  • 重庆党政代表团在沪考察,陈吉宁龚正与袁家军胡衡华共商两地深化合作工作
  • 乡村快递取件“跑腿费”屡禁不止?云南元江县公布举报电话
  • 保利发展前4个月销售额约876亿元,单月斥资128亿元获4个项目