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);