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



posted @ 2019-10-10 18:39  不带R的墨菲特  阅读(915)  评论(0)    收藏  举报