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

JMeter 5.0(Groovy):如何提取嵌套JSON的v1值并合并为数组?

解决方案

1. 添加JSR223 PostProcessor

在目标请求节点下添加JSR223 PostProcessor,语言选择Groovy(JMeter 5.0对Groovy支持完善,性能优于其他脚本语言)。

2. Groovy处理代码

直接利用Groovy的JSON解析工具处理嵌套结构,代码如下:

import groovy.json.JsonSlurper
import groovy.json.JsonBuilder

// 获取接口原始响应文本
def rawResponse = prev.getResponseDataAsString()
def jsonSlurper = new JsonSlurper()
def originalData = jsonSlurper.parseText(rawResponse)

// 遍历处理每个规则对象
def processedResult = originalData.collect { rule ->
    // 保留rid、rname等核心字段
    def processedRule = [
        rid: rule.rid,
        rname: rule.rname,
        // 如需保留其他顶层字段,直接按此格式追加
        con: [
            // 保留con对象中的其他字段(例如type、code等,按需添加)
            type: rule.con.type,
            // 提取values数组内所有v1值,生成新的value数组
            value: rule.con.values.collect { item -> item.v1 }
        ]
    ]
    return processedRule
}

// 将处理后的数据转为格式化JSON字符串
def jsonBuilder = new JsonBuilder(processedResult)
def formattedJson = jsonBuilder.toPrettyString()

// 可选:将处理结果存入JMeter变量,供后续逻辑使用
vars.put("processedResponse", formattedJson)

// 可选:替换原始响应,直接在结果树中查看处理后的格式
prev.setResponseData(formattedJson.getBytes("UTF-8"))

3. 关键逻辑说明

  • rule.con.values.collect { item -> item.v1 }:这行代码是核心,遍历con对象下的values数组,提取每个元素的v1值,自动合并为新的value数组。
  • 若con对象还有其他需要保留的字段(如type、desc),直接在con的Map结构中追加即可。
  • 处理后的JSON可存入变量供后续请求使用,也可替换原始响应方便调试查看。

4. 验证方式

运行测试后,查看结果树中的响应数据,即可确认每个规则的rid、rname保留完整,con对象下的values已被替换为包含所有v1值的value数组。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:42:29