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

如何用Groovy脚本解析存在重复父元素名的JSON行数据

问题核心原因

你当前代码有两个明显问题:

  1. 你给出的JSON最外层是数组结构,JsonSlurper 解析后的根节点是列表,需要先取第0个元素才能获取到forms字段
  2. 多个同名form2节点会返回列表,需要筛选出包含gridData有效数据的节点

可用代码示例(仅依赖Groovy自带的JsonSlurper,无需额外包)

import groovy.json.JsonSlurper

// 解析JSON,formData为你的原始JSON字符串变量
def jsonRoot = new JsonSlurper().parseText(formData)
// 取第一层数组的第一个元素,获取forms列表
def formsList = jsonRoot[0].forms

// 筛选出包含有效gridData的form2节点
def validForm2 = formsList.findResult { formItem ->
    // 存在form2且data下有gridData则返回,否则跳过
    formItem.form2?.data?.gridData ? formItem.form2 : null
}

// 拿到用户数据行集合
def customerRows = validForm2.data.gridData.rowset

// 遍历处理客户数据
customerRows.each { row ->
    // 这里替换为你的业务逻辑即可
    println "客户姓名:${row.col1}"
    println "客户编号:${row.col2}"
    println "客户邮箱:${row.col3}"
    println "------------------------"
}

代码说明

  • 用findResult遍历forms列表,自动过滤掉没有有效数据的form2,不需要手动判断第几个form2是有效的,即使后续form2顺序调整也能正常运行
  • Groovy的安全引用符?.可以避免空指针异常,不用写多层if判空
  • 直接用对象.属性的方式取值,不需要调用get()方法,代码更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:39:00