如何用Groovy脚本解析存在重复父元素名的JSON行数据
问题核心原因
你当前代码有两个明显问题:
- 你给出的JSON最外层是数组结构,
JsonSlurper解析后的根节点是列表,需要先取第0个元素才能获取到forms字段 - 多个同名
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
相关产品推荐
相关产品推荐

