jmeter 实现要求使用beanshell 或者JSR223 够造请求body json请求体
实现要求使用beanshell 或者JSR223 够造请求body json请求体

预期请求体json效果:

1、方法一:JSR223 选取-groovy脚本

import java.util.List;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONObject;
String skuId1 = vars.get("skuId1");
String skuId2 = vars.get("skuId2");
String skuId3 = vars.get("skuId3");
List<String> skuIdsList = new ArrayList<>();
if (skuId1 != null && !skuId1.trim().isEmpty()) skuIdsList.add(skuId1);
if (skuId2 != null && !skuId2.trim().isEmpty()) skuIdsList.add(skuId2);
if (skuId3 != null && !skuId3.trim().isEmpty()) skuIdsList.add(skuId3);
// 如果 skuIdsList 不为空,则继续构建 JSON
String jsonBody;
if (!skuIdsList.isEmpty()) {
StringBuilder jsonBodyBuilder = new StringBuilder("[");
boolean firstItem = true;
for (String skuId : skuIdsList) {
if (!firstItem) {
jsonBodyBuilder.append(",");
}
jsonBodyBuilder.append("{\"quantity\":1,\"productSkuId\":\"").append(skuId).append("\",\"productId\":\"someProductId\"}");
firstItem = false;
}
jsonBodyBuilder.append("]");
jsonBody = jsonBodyBuilder.toString();
// 存储 JSON 字符串到 JMeter 变量
vars.put("sku_arr", jsonBody);
// 如果需要在日志中查看
// log.info(jsonBody);
} else {
// 处理没有 skuId 的情况,比如可以设置一个空的 JSON 数组
jsonBody = "{\"addSku\":[]}";
vars.put("sku_arr", jsonBody);
}
方法2“: JAVA Beanshell

import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
// 从JMeter变量中获取skuIds
String skuId1 = vars.get("skuId1");
String skuId2 = vars.get("skuId2");
String skuId3 = vars.get("skuId3");
// 创建一个列表来存储skuIds,注意beanshell不支持变量类型的指定如List<String>
List skuIdsList = new ArrayList();
// 检查变量是否为空或仅包含空白字符,并添加到列表
if (skuId1 != null && !skuId1.trim().isEmpty()) skuIdsList.add(skuId1);
if (skuId2 != null && !skuId2.trim().isEmpty()) skuIdsList.add(skuId2);
if (skuId3 != null && !skuId3.trim().isEmpty()) skuIdsList.add(skuId3);
// 构建JSON数组
JSONArray skuArray = new JSONArray();
for (String skuId : skuIdsList) {
JSONObject skuObj = new JSONObject();
skuObj.put("quantity", 1);
skuObj.put("productSkuId", skuId);
skuObj.put("productId", "someProductId");
skuArray.put(skuObj);
}
// 如果skuIdsList为空,则创建一个空的JSON数组
if (skuIdsList.isEmpty()) {
skuArray = new JSONArray();
}
// 将JSON数组封装在一个JSONObject中(如果需要的话),这里直接存储数组
String jsonBody = skuArray.toString();
// 存储JSON字符串到JMeter变量
vars.put("sku_arr", jsonBody);
// 如果需要在日志中查看
// log.info(jsonBody);
beanshell封装:
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
import org.json.JSONArray;
import org.json.JSONObject;
// 从JMeter变量中获取skuIds
String skuIds = vars.get("skuIds");
// 创建一个列表来存储skuIds,注意beanshell不支持变量类型的指定如List<String>,ARRAY 转List直接转调用内部方法
List skuIdsList = new ArrayList(Arrays.asList(skuIds.split(",")));
// 构建JSON数组
JSONArray skuArray = new JSONArray();
for (String skuId : skuIdsList) {
JSONObject skuObj = new JSONObject();
skuObj.put("quantity", 1);
skuObj.put("productSkuId", skuId);
skuObj.put("productId", "someProductId");
skuArray.put(skuObj);
}
// 如果skuIdsList为空,则创建一个空的JSON数组
if (skuIdsList.isEmpty()) {
skuArray = new JSONArray();
}
// 将JSON数组封装在一个JSONObject中(如果需要的话),这里直接存储数组
String jsonBody = skuArray.toString();
// 存储JSON字符串到JMeter变量
vars.put("sku_arr", jsonBody);
// 如果需要在日志中查看
// log.info(jsonBody);


浙公网安备 33010602011771号