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

如何在Groovy脚本中提取JSON的id值升序排序后用于forEach控制器

Groovy实现提取排序ID并对接forEach控制器

场景1:JMeter环境(配合forEach控制器使用)

你需要将脚本放在GET请求的JSR223后置处理器中,语言选择Groovy即可,完整代码如下:

import groovy.json.JsonSlurper

// 解析上一个GET请求的响应内容
def responseJson = new JsonSlurper().parse(prev.getResponseDataAsString().getBytes())

// 提取所有id字段并按升序排序
def sortedIdList = responseJson*.id.sort()

// 将排序后的ID按规则存入JMeter变量,供forEach控制器读取
sortedIdList.eachWithIndex { id, index ->
    vars.put("sorted_id_${index + 1}", id.toString())
}
// 存储ID总数,可用于后续逻辑校验
vars.put("sorted_id_count", sortedIdList.size().toString())

forEach控制器配置步骤:

  • 输入变量前缀填写 sorted_id
  • 输出变量名称填写你后续请求需要引用的变量名,例如 current_use_id
  • 勾选「Add "_" before number?」选项
    配置完成后,每次循环控制器会按升序取出一个ID存入你设置的输出变量,直接用${current_use_id}即可引用。

场景2:普通Groovy程序使用

如果不需要对接JMeter,直接处理JSON字符串的实现代码如下:

import groovy.json.JsonSlurper

// 替换为你实际GET请求返回的JSON字符串
def responseContent = '''
[
    {
        "id": 1410,
        "name": "ESPav2",
        "orgId": "TestServer1",
        "createdDate": "2021-09-23T08:47:39.5553398",
        "isActive": true
    },
    {
        "id": 1406,
        "name": "ESPav1",
        "orgId": "TestServer1",
        "createdDate": "2021-09-23T12:15:32.982959",
        "isActive": true
    },
    {
        "id": 1409,
        "name": "sub1",
        "orgId": "TestServer1",
        "createdDate": "2021-09-23T17:45:58.9410605",
        "isActive": true
    },
    {
        "id": 1408,
        "name": "bl",
        "orgId": "TestServer1",
        "createdDate": "2021-09-24T04:18:26.6323815",
        "isActive": true
    },
    {
        "id": 1407,
        "name": "Test",
        "orgId": "TestServer1",
        "createdDate": "2021-09-24T04:19:07.3712661",
        "isActive": true
    },
    {
        "id": 1405,
        "name": "ESPav2",
        "orgId": "TestServer1",
        "createdDate": "2021-09-24T05:02:58.8471913",
        "isActive": true
    }
]
'''

// 解析JSON
def jsonData = new JsonSlurper().parseText(responseContent)
// 提取并排序ID
def sortedIds = jsonData*.id.sort()

// 遍历执行逻辑,等价于forEach效果
sortedIds.each { id ->
    // 此处替换为你需要执行的业务逻辑
    println "当前处理ID:${id}"
}

核心语法说明

代码中的responseJson*.id是Groovy的扩展运算符,等价于遍历数组所有元素提取id属性,相比手动循环写法更简洁高效;sort()方法对数字类型默认执行升序排序,无需额外传参。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:09:00