环境准备

  ①Jmeter版本 ,JDK

  ②前置条件:将json.jar包置于..\lib\下,

      如果还是报错,可以将该jar包添加到测试计划的Library中;否则会报:Typed variable declaration : Class: JSONObject not found in namespace的错误;

  ③处理器:Beanshell处理器,import org.json.*;  

      也可以 import org.json.JSONObject;、import org.json.JSONAarry;主要是处理这两种类型的数据,Json对象和Json数组

eg:例子来源于https://blog.csdn.net/weixin_42204641/article/details/82850659

 JSONObject:{"name":"tom"}、{"name":["tome","kate"]}            

// 先设置1个JSONObject、一个JSONArray
JSONObject jsono = new JSONObject();
JSONArray  jsona = new JSONArray();//JSONArray传值
jsona.put("tom");
jsona.put("kate");//["tom","kate"]//JSONObject传值
jsono.put("name",jsona);//{"name":["tom","kate"]}

JSONAarry:[{"name":"tom"},{"name":"kate"}]

JSONArray jsona = new JSONArray();JSONObject jsono1 = new JOSNObject();JSONObject jsono2 = new JSONObject();jsono1.put("name","tom");//{"name":"tom"}
jsono2.put("name","kate");//{"name":"kate"}

jsona.put(json1,json2);//[{"name":"tom"},{"name":"tom"}]

主流思想

  1.获取response返回的数据(返回值)    

    String response_data = prev.getResponseDataAsString(); //自定义一个变量response_data,来获取请求的返回值String

  2.利用上一步获取的字符串形式的JSON,结合Java处理Json的方法,将需要的键值提取出来;

    JSONObject response =  new JSONObject(response_data); //自定义一个对象response,将返回值构造JSON对象

    这里构造的是JSONObject(对象JSON)也可以自己构造JSONAarry(数组对象)方法是一样的  JSONArray jsona = new JSONArray();

  3.获取需要拿到的数据

    String total_metaData = response.get("data").get("pageMetaData").get("totalSize").toString();   //.get("data").get("pageMetaData")

  4.设置为Jmeter中的全局变量,供后续使用

    vars.put("total_meta",total_metaData);      //这里设置的全局变量,在本脚本中无效--${total_meta}是错误的

【示例1-----JSONObject对象】

  ①获取到JSON对象,需要提取其中的data对象,并更换“issueHandleType”字段的值为“CLOSE”,再构造成参数字符串;

  A请求后添加BeanShell后置处理器,代码如下:

import org.json.*;String response_data = prev.getResponseDataAsString(); //获取请求返回值。注意此处只能获取到String类型;
log.info(response_data);JSONObject data_obj = new JSONObject(response_data); //将String类型的返回值构造成JSONObject对象,才可使用Java对象的方法对其进行操作;

String StrData = data_obj.get("data").toString(); //获取作为下一个请求post的参数值data;
log.info(StrData); //Log中显示的字段顺序会与“response_data”中的字段顺序有差异,JSON串的正确与否无关字段顺序;

JSONObject JsonData = new JSONObject(StrData); //将获取到的“data”字符串构造成JSON对象;

JsonData.put("issueHandleType", "CLOSE"); //更新issueHandleType的json值;
JsonData.put("solution", "2017_解决方案_性能测试");
JsonData.put("status", "CLOSED");
JsonData.put("handleType", "CLOSE");
JsonData.put("complaintTypeSecondCode", "URGE"); //异常类型;
JsonData.put("complaintTypeSecondName", "催件");
JsonData.put("lastUpdateTime", "${timestamp}");
JsonData.put("lastUpdator", "${UserName}");
JsonData.put("lastUpdatorName", "${UserName}");String NewData = JsonData.toString(); //将JSON对象保存为String类型,Jmeter中的请求的参数均以字符串的形式传递;
vars.put("NewStrData",NewData);
log.info(NewData);

【示例2-----JSONArray对象】

  需要提取返回值中,每一个对象数组中的每一个 uuid 及 id 的键值:获取JSON对象,再提取data数组内容并获取data数组长度,最后循环提取每一个 uuid 及 id 的键值;备注:1个客服同时与10个客户聊天,在聊天开始之前,需要捞取到这10个客户的uuid(uuid)及conversationId(id);

//import org.json.*;import org.json.JSONObject;
import org.json.JSONArray;try {String response_data = prev.getResponseDataAsString(); //获取请求返回值。注意此处只能获取到String类型;JSONObject data_obj = new JSONObject(response_data); //将String类型的返回值构造成JSONObject对象;
    JSONArray data_array = data_obj.getJSONArray("data");   //data为数组int len = data_array.length();                                                //获取data数组的长度String strlen = Integer.toString(len);vars.put("MessageNum",strlen);//log.info(strlen);int i = 0;for(;i < len;++i){JSONObject jsonTemp = (JSONObject)data_array.getJSONObject(i);      //获取 data[ i ] 数组对象;switch(i){case 0:    vars.put("uuid_1", jsonTemp.getString("uuid")); vars.put("conversationId_1", jsonTemp.getString("id")); break;case 1:    vars.put("uuid_2", jsonTemp.getString("uuid")); vars.put("conversationId_2", jsonTemp.getString("id")); break;//..................................此处省去7次处理case 10:    vars.put("uuid_11", jsonTemp.getString("uuid")); vars.put("conversationId_11", jsonTemp.getString("id")); break;default:break;}}
}
catch (Throwable ex) {log.error("Failed in Beanshell", ex);throw ex;
}

转载于:https://www.cnblogs.com/nieliangcai/p/10535194.html

BeanShell使用json.jar包处理Json数据相关推荐

  1. Jmeter BeanShell使用json.jar包处理Json数据

    1.环境准备 1)  Jmeter.JDK 2) 将json.jar包置于..\lib\下 json包下载地址:https://mvnrepository.com/ (国内的maven地址) 可以参考 ...

  2. Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换

    总结一下利用Json相关jar包实现Java对象和集合与Json字符串之间的互相转换: 1.创建的User类: package com.ghj.packageofdomain;public class ...

  3. java json解析jar包,解析json常用jar包

    13.轻量级的 JSON API:内置了一个轻量级的 JSON API 14.响... 1.加入 Jackson.jar? 2.在配置文件中配置 json 的映射? 3... 和json都是一种数据交 ...

  4. java转json jar包_java转换json需导入的jar包说明

    commons-beanutils-1.8.0.jar不加这个包 java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBe ...

  5. java json jar包_jsonobject jar包下载

    JSONObject所必须的6个jar包分享给需要的朋友,这是json开发必备的jar工具架包,如果您正需要的话不如马上来脚本之家下载这款官方最新的jsonobject jar包供您进行json开发, ...

  6. 外部jar包_大数据系列之PySpark读写外部数据库

    本文以MySQL和HBASE为例,简要介绍Spark通过PyMySQL和HadoopAPI算子对外部数据库的读写操作 1.PySpark读写MySQL MySQL环境准备参考"数据库系列之M ...

  7. java jdbc jar包_大数据从入门到深入:JavaEE 之 数据库技术 JDBC(1)

    1章 JDBC 1.1 JDBC概述 JDBC(Java DataBase Connectivity,java动态数据 库连接技术)是一种用于执行SQL语句的Java API : Applicatio ...

  8. json jar包支持

    json-lib工具包(json核心包) 下载地址: json-lib-2.4-jdk15.jar http://sourceforge.net/projects/json-lib/files/jso ...

  9. 对象json字符串数组 java对象,java把json的字符串转换为json对象和数组

    [Json--使用Json jar包实现Json字符串与Java对象或集合之间的互相转换] 1,[java将JSON字符串转换为实体类对象 @SuppressWarnings(unchecked)pu ...

最新文章

  1. 用户眼中的银行信息化-我的开博感言
  2. nginx反向代理配置去除前缀
  3. 滴滴技术总监受贿 1000 万,列入招聘黑名单,互联网大厂反腐有多强?
  4. XUtils BitmapUtils 改造以加入drawable支持
  5. 使用python制作ArcGIS插件(1)工具介绍
  6. mro python_一窥Python中MRO排序原理
  7. 英寸和厘米的交互python_Python / PyQt4:如何找到显示器的尺寸(以英寸为单位)?...
  8. 国内开源镜像站点汇总
  9. WinCE 5.0下的鼠标键盘驱动分析
  10. qpython做连点器脚本_「PyMouse」做个连点器给老师点赞
  11. 鼠标不能动怎么选择计算机,鼠标不动了怎么办解决方案
  12. 此时墨迹在计算机上不起作用,win7系统自带截图工具不见了怎么找回
  13. 计算机术语CPI是什么意思,鼠标上的cpi什么意思?鼠标知识科普
  14. 微信公众平台开发实例 php,php微信公众平台开发类实例,php公众平台实例_PHP教程...
  15. 学it需要学历吗_学IT需要什么学历
  16. texstudio设置暗黑主题
  17. html思维导图word版,(完整word版)非谓语动词练习及思维导图
  18. 疫情放开后,如何保护居家员工的办公安全?
  19. ffmpeg h264文件转mp4
  20. 调整重做日志缓冲区的大小

热门文章

  1. Missing number
  2. JavaSE replaceAll 方法
  3. List和ObservableCollection的相互转化
  4. Dojo QuickStart 快速入门教程 (1) Why Dojo
  5. DELPHI 中 Window 消息大全使用详解
  6. 【Leetcode】 刷题之路1(python)
  7. 对口高考选的计算机应用好吗,对口高考专业有哪些比较好
  8. linux shell脚本攻略_(python)Linux下shell脚本监控Tomcat的状态并实现自动启动步骤...
  9. 批量替换_批量替换图框
  10. python神经网络原理pdf_《深度学习原理与 TensorFlow实践》高清完整PDF版 下载