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

求助:使用Groovy脚本将嵌套JSON转换为指定格式CSV

Groovy JSON转CSV问题解决指导

需求说明

需要将嵌套结构的JSON转换为扁平化的CSV格式:

输入JSON

[{
"id":1,
"campaign":
{
"cost":0,
"name":"Test1"
},
"visitorId":3
},
{
"id":2,
"campaign":
{
"cost":0,
"name":"Test2"
},
"visitorId":5
}]

期望输出CSV

id,cost,name,visitorID
1,0,Test1,3
2,0,Test2,5

原脚本问题分析

你提供的脚本直接通过it.collect{ it.value }提取顶层字段值,但campaign是嵌套的Map对象,会被直接转为字符串(如[cost:0, name:Test1]),无法拆解出cost和name字段,导致输出格式不符合预期。

修正后的脚本

def jsonSlurper = new groovy.json.JsonSlurper()
def object = jsonSlurper.parseText(message.getBody(java.lang.String) as String)
StringBuilder sb = new StringBuilder()

// 写入CSV表头
sb << "id,cost,name,visitorID\n"

// 遍历每个数据项,提取扁平化字段
object.each { item ->
    def line = [
        item.id,
        item.campaign.cost,
        item.campaign.name,
        item.visitorId
    ].join(",")
    sb << line << "\n"
}

// 移除最后多余的换行符,设置结果
message.setBody(sb.toString().trim())

脚本说明

  1. 先手动写入符合需求的CSV表头,确保字段顺序正确
  2. 遍历每个JSON对象时,明确提取顶层的id、visitorId,以及嵌套在campaign里的cost和name字段
  3. 将提取的字段用逗号拼接成一行,添加到结果中
  4. 最后用trim()移除末尾多余的换行,避免CSV出现空行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:35:15