背景
使用org.json.JSONObject 转换,与原Body参数顺序发生变化,原因:JSONObject内部是用Hashmap来存储的,本质上是一个无序的键值对集合,不应依赖字段的添加顺序。
为解决org.json.JSONObject 输出顺序问题,采用Gson进行json格式的String转换为Json并进行数据操作,保证输出按照字段的添加顺序。
//bodyString 请求body
JSONObject dataobj = new JSONObject(bodyString);//输出结果
{"taskSubTitle":"方案0","taskId":"1833041310154539010"}
具体实现
1、下载 Gson 对应的 Jar 包
https://mvnrepository.com/search?q=Gson
2、jar 包配置
将下载的 Jar 放到 Jmeter 安装目录 lib/ext 文件夹下,测试计划配置 jar 包位置,重启 Jmeter
3、BeanShell 中引入 Jar
import com.google.gson.*;
4、Gson 应用
//获取请求 Body
Arguments args = sampler.getArguments();
String arg = args.getArgument(0).getValue();
//使用 Gson 将 String 转换为 JsonObject(按照顺序输入)
JsonObject jsonObject = new JsonParser().parse(arg).getAsJsonObject();
//获取 key 值
jsonObject.get("taskId");
//向 Body 中添加新的字段(如果 key 已经存在则替换 value)
jsonObject.addProperty("taskId", "ajklsdhfaksdfasdf");