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
相关产品推荐
相关产品推荐

