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

Groovy中如何将JSON结构的scheduleElements对象转为方括号数组

Groovy 实现 scheduleElements 字段从对象转数组的操作方案

整体实现流程

  • 依托 Groovy 原生 JSON 处理能力完成结构转换,无需额外引入第三方依赖
  • 执行步骤:将原始JSON解析为Groovy Map结构 → 定位value.scheduleElements字段,将原对象包装为单元素数组 → 重新序列化为格式化JSON字符串

核心可运行代码

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

// 原始JSON数据(注意:示例原数据中startDate后的冗余逗号为非标准格式,实际使用时需先清理再解析)
def rawJson = '''
{
   "value":{
      "ID":"1c1238c8-3517-47c7-83de-6269fa6098cc",
      "scheduleElements":{
         "ID":"92a1352d-8319-4e1a-b921-0d7d0ee9f59e",
         "parentItem_ID":"1c1238c8-3517-47c7-83de-6269fa6098cc",
         "startDate":"2025-05-30"
      }
   }
}
'''

// 1. 解析JSON为Groovy可操作的结构
def jsonSlurper = new JsonSlurper()
def parsedData = jsonSlurper.parseText(rawJson)

// 2. 核心转换:将单对象形式的scheduleElements包装为单元素数组
parsedData.value.scheduleElements = [parsedData.value.scheduleElements]

// 3. 生成格式化后的目标JSON
def convertedResult = JsonOutput.prettyPrint(JsonOutput.toJson(parsedData))

println convertedResult

兼容性优化

实际业务中若存在scheduleElements字段已经是数组的场景,可增加类型判断,避免重复嵌套成多层数组:

// 替代硬转换的兼容逻辑
def targetField = parsedData.value.scheduleElements
if (!(targetField instanceof List)) {
    parsedData.value.scheduleElements = [targetField]
}

常见问题处理

  • 若拿到的原始JSON存在对象末尾的冗余逗号(非标准JSON规范),需先对原始字符串做正则替换清理冗余字符后,再执行解析操作,避免解析报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 05:57:04