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

Groovy如何实现非固定字段JSON结构的动态格式化转换

Groovy实现指定JSON结构转换方案

直接使用Groovy自带的JSON处理工具即可实现无感知适配任意字段名、字段数量的转换需求,示例代码如下:

import groovy.json.JsonSlurper
import groovy.json.JsonOutput

// 输入的原始JSON字符串
def rawJson = '''
{
   "Fields":[
      "FieldName1",
      "FieldName2",
      "FieldName3",
      "FieldName4",
      "FieldName5"
   ],
   "Rows":[
      {
         "Values":[
            "A",
            "B",
            "C",
            "D",
            "E"
         ]
      },
      {
         "Values":[
            "F",
            "G",
            "H",
            "I",
            "J"
         ]
      },
      {
         "Values":[
            "K",
            "L",
            "M",
            "N",
            "O"
         ]
      }
   ]
}
'''

// 解析原始JSON
def jsonData = new JsonSlurper().parseText(rawJson)

// 核心转换逻辑:遍历所有行,将字段名和对应值拼接为Map
def result = [
    values: jsonData.Rows.collect { row ->
        // 按索引配对字段名和值,自动适配任意数量、任意名称的字段
        [jsonData.Fields, row.Values].transpose().collectEntries()
    }
]

// 若需和示例输出一致仅保留前4个字段,可修改为以下逻辑
// def result = [
//     values: jsonData.Rows.collect { row ->
//         [jsonData.Fields.take(4), row.Values.take(4)].transpose().collectEntries()
//     }
// ]

// 输出格式化后的结果
println JsonOutput.prettyPrint(JsonOutput.toJson(result))

逻辑说明

  • 转换逻辑完全不依赖固定字段名、固定字段数量:通过transpose()方法将字段名数组和行值数组按索引一一配对,collectEntries()直接将配对后的二维数组转为键值对Map,只要每行的Values数组长度和Fields数组长度一致,即可正常转换。
  • 如需调整输出字段的筛选规则,仅需要在配对前对jsonData.Fields做截取/过滤处理即可,不需要修改核心转换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 10:09:02