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

Groovy中如何遍历JSON数组并读取每个元素的值

修正Groovy代码实现JSON数组循环读取并输出指定格式

原代码问题点

  • 变量名不匹配:定义了sourceValue_Number却使用未声明的sourceValue_SerialNumber,且record.text()是错误的取值方式,应从遍历的element中获取SNumber
  • 仅创建JsonBuilder但未处理生成的JSON结果,也未修改返回的消息内容
  • 未将处理后的结果更新到返回消息中

修正后的代码

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

def Message processData(Message message) {
    // 解析输入的JSON内容
    def jsonReader = message.getBody(java.io.Reader)
    def data = new JsonSlurper().parse(jsonReader)
    
    // 收集每个格式化后的JSON字符串
    def serialNumberResults = []
    data.SerialNumbers.each { element ->
        // 获取当前元素的SNumber值
        def targetNumber = element.SNumber
        
        // 构建预期格式的JSON对象
        def jsonBuilder = new JsonBuilder()
        jsonBuilder {
            SNumber targetNumber
        }
        
        // 将格式化后的JSON字符串加入结果列表
        serialNumberResults.add(jsonBuilder.toPrettyString())
    }
    
    // 拼接结果为预期的输出格式(每个JSON单独占一段)
    def outputContent = serialNumberResults.join('\n\n')
    // 更新消息体为处理后的结果
    message.setBody(outputContent)
    
    return message
}

代码说明

  1. JSON解析:通过JsonSlurper正确读取并解析输入的JSON结构
  2. 数组遍历:使用each循环遍历SerialNumbers数组中的每一项元素
  3. JSON构建:从每个元素中提取SNumber值,用JsonBuilder生成符合要求的JSON对象
  4. 结果输出:将所有生成的JSON字符串拼接成预期格式,更新消息体后返回

执行后输出

消息体将返回如下内容:

{
    "SNumber": "IR-240607000100"
}

{
    "SNumber": "IR-240607000101"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 04:17:06