You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JMeter 5.5:从字符串格式JSON响应提取partnerJoin为Yes的ID值

解决方案

Groovy脚本方案(推荐)

Groovy在JMeter中性能优于BeanShell,且自带JSON解析工具,无需额外依赖,步骤如下:

  1. 在目标HTTP请求下添加JSR223 PostProcessor
  2. 在PostProcessor的"Script Language"下拉框选择groovy
  3. 输入以下脚本:
// 获取接口响应体内容
def response = prev.getResponseDataAsString()

// 解析外层JSON结构,取出data1字段的字符串内容
def outerJson = new groovy.json.JsonSlurper().parseText(response)
def data1Str = outerJson.data1

// 将data1的字符串解析为JSON数组
def data1Array = new groovy.json.JsonSlurper().parseText(data1Str)

// 遍历数组,筛选出partnerJoin值为"Yes"的对象id
def targetIds = []
data1Array.each { item ->
    if (item.partnerJoin == "Yes") {
        targetIds.add(item.id.toString())
    }
}

// 将结果存入JMeter变量:
// 若需多个id用逗号分隔,执行下面一行
vars.put("targetId", targetIds.join(","))
// 若仅需第一个符合条件的id,替换为以下代码块
// if (targetIds.size() > 0) {
//     vars.put("targetId", targetIds[0])
// }

脚本说明:

  • prev是JMeter内置对象,用于获取当前请求的响应数据
  • JsonSlurper是Groovy原生的JSON解析类,无需额外引入依赖
  • vars是JMeter内置对象,用于将提取到的id存入变量,后续可通过${targetId}引用

BeanShell脚本方案

若需使用BeanShell,需依赖JMeter自带的org.json包,步骤如下:

  1. 在目标HTTP请求下添加BeanShell PostProcessor
  2. 输入以下脚本:
import org.json.JSONObject;
import org.json.JSONArray;

// 获取接口响应体
String response = prev.getResponseDataAsString();

// 解析外层JSON,获取data1字段的字符串
JSONObject outerJson = new JSONObject(response);
String data1Str = outerJson.getString("data1");

// 将data1字符串解析为JSON数组
JSONArray data1Array = new JSONArray(data1Str);

// 遍历数组筛选目标id
String targetId = "";
for (int i = 0; i < data1Array.length(); i++) {
    JSONObject item = data1Array.getJSONObject(i);
    if ("Yes".equals(item.getString("partnerJoin"))) {
        // 多个id用逗号拼接
        targetId += item.getString("id") + ",";
        // 仅需第一个id则取消下面两行注释,同时注释上一行
        // targetId = item.getString("id");
        // break;
    }
}

// 移除末尾多余的逗号(多id场景)
if (targetId.endsWith(",")) {
    targetId = targetId.substring(0, targetId.length() - 1);
}

// 存入JMeter变量
vars.put("targetId", targetId);

脚本说明:

  • 需确保JMeter的lib目录下存在json.jar(JMeter 5.5默认自带)
  • 若出现类找不到的错误,需手动下载该jar包放入lib目录并重启JMeter

内容的提问来源于stack exchange,提问作者suravi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:55:19