BeanShell使用json.jar包处理Json数据
环境准备
①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数据相关推荐
- Jmeter BeanShell使用json.jar包处理Json数据
1.环境准备 1) Jmeter.JDK 2) 将json.jar包置于..\lib\下 json包下载地址:https://mvnrepository.com/ (国内的maven地址) 可以参考 ...
- Json——使用Json jar包实现Json字符串与Java对象或集合之间的互相转换
总结一下利用Json相关jar包实现Java对象和集合与Json字符串之间的互相转换: 1.创建的User类: package com.ghj.packageofdomain;public class ...
- java json解析jar包,解析json常用jar包
13.轻量级的 JSON API:内置了一个轻量级的 JSON API 14.响... 1.加入 Jackson.jar? 2.在配置文件中配置 json 的映射? 3... 和json都是一种数据交 ...
- java转json jar包_java转换json需导入的jar包说明
commons-beanutils-1.8.0.jar不加这个包 java.lang.NoClassDefFoundError: org/apache/commons/beanutils/DynaBe ...
- java json jar包_jsonobject jar包下载
JSONObject所必须的6个jar包分享给需要的朋友,这是json开发必备的jar工具架包,如果您正需要的话不如马上来脚本之家下载这款官方最新的jsonobject jar包供您进行json开发, ...
- 外部jar包_大数据系列之PySpark读写外部数据库
本文以MySQL和HBASE为例,简要介绍Spark通过PyMySQL和HadoopAPI算子对外部数据库的读写操作 1.PySpark读写MySQL MySQL环境准备参考"数据库系列之M ...
- java jdbc jar包_大数据从入门到深入:JavaEE 之 数据库技术 JDBC(1)
1章 JDBC 1.1 JDBC概述 JDBC(Java DataBase Connectivity,java动态数据 库连接技术)是一种用于执行SQL语句的Java API : Applicatio ...
- json jar包支持
json-lib工具包(json核心包) 下载地址: json-lib-2.4-jdk15.jar http://sourceforge.net/projects/json-lib/files/jso ...
- 对象json字符串数组 java对象,java把json的字符串转换为json对象和数组
[Json--使用Json jar包实现Json字符串与Java对象或集合之间的互相转换] 1,[java将JSON字符串转换为实体类对象 @SuppressWarnings(unchecked)pu ...
最新文章
- 用户眼中的银行信息化-我的开博感言
- nginx反向代理配置去除前缀
- 滴滴技术总监受贿 1000 万,列入招聘黑名单,互联网大厂反腐有多强?
- XUtils BitmapUtils 改造以加入drawable支持
- 使用python制作ArcGIS插件(1)工具介绍
- mro python_一窥Python中MRO排序原理
- 英寸和厘米的交互python_Python / PyQt4:如何找到显示器的尺寸(以英寸为单位)?...
- 国内开源镜像站点汇总
- WinCE 5.0下的鼠标键盘驱动分析
- qpython做连点器脚本_「PyMouse」做个连点器给老师点赞
- 鼠标不能动怎么选择计算机,鼠标不动了怎么办解决方案
- 此时墨迹在计算机上不起作用,win7系统自带截图工具不见了怎么找回
- 计算机术语CPI是什么意思,鼠标上的cpi什么意思?鼠标知识科普
- 微信公众平台开发实例 php,php微信公众平台开发类实例,php公众平台实例_PHP教程...
- 学it需要学历吗_学IT需要什么学历
- texstudio设置暗黑主题
- html思维导图word版,(完整word版)非谓语动词练习及思维导图
- 疫情放开后,如何保护居家员工的办公安全?
- ffmpeg h264文件转mp4
- 调整重做日志缓冲区的大小
热门文章
- Missing number
- JavaSE replaceAll 方法
- List和ObservableCollection的相互转化
- Dojo QuickStart 快速入门教程 (1) Why Dojo
- DELPHI 中 Window 消息大全使用详解
- 【Leetcode】 刷题之路1(python)
- 对口高考选的计算机应用好吗,对口高考专业有哪些比较好
- linux shell脚本攻略_(python)Linux下shell脚本监控Tomcat的状态并实现自动启动步骤...
- 批量替换_批量替换图框
- python神经网络原理pdf_《深度学习原理与 TensorFlow实践》高清完整PDF版 下载