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

如何在不同场景下从同一请求获取并存储对应变量的JSON响应data值

按场景单独保存JSON响应中的data值

要实现按不同场景单独保存响应里的data值,你需要把逻辑放在JSR233后置处理器中(前置处理器在请求发送前执行,无法获取响应内容),具体实现步骤如下:

核心代码实现

// 导入Groovy JSON解析工具
import groovy.json.JsonSlurper

// 获取已定义的场景变量
def currentScenario = vars.get("Scenario")
// 获取当前请求的响应文本
def responseBody = prev.getResponseDataAsString()

// 解析JSON响应内容
def jsonParser = new JsonSlurper()
def parsedResponse = jsonParser.parseText(responseBody)

// 提取响应中的data值
def targetData = parsedResponse.data

// 根据场景保存到对应变量
// 方式1:固定场景名称匹配(适合场景数量固定的情况)
switch(currentScenario) {
    case "场景A":
        vars.put("ScenarioA_Data", targetData)
        break
    case "场景B":
        vars.put("ScenarioB_Data", targetData)
        break
    case "场景C":
        vars.put("ScenarioC_Data", targetData)
        break
    default:
        // 处理未预设的场景,可选
        vars.put("UnmatchedScenario_Data", targetData)
}

// 方式2:动态生成变量名(适合场景名称不固定的情况)
// vars.put("${currentScenario}_Data", targetData)

关键说明

  • prev.getResponseDataAsString():获取当前采样器的响应内容,这是后置处理器中获取响应的标准方式。
  • JsonSlurper:Groovy内置的JSON解析工具,能快速将JSON文本转换为可直接访问的对象。
  • 变量保存:vars.put()方法会将值存入JMeter变量,后续测试元件可以通过${变量名}直接引用。
    • 方式1适合场景名称固定的情况,逻辑清晰;方式2无需逐个匹配场景,直接根据Scenario变量值生成对应的存储变量(比如Scenario值为"Pay",则生成Pay_Data变量)。

注意事项

  • 确保JSR233后置处理器与需要处理的请求关联(放在请求的子节点下)。
  • Scenario变量的取值要与代码中的匹配值完全一致(包括大小写、空格),否则会进入default分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:23:17