Groovy实现XML转指定格式JSON数组的代码问题排查
Groovy XML转指定格式JSON 解决方案
原有代码问题
- 硬编码添加了不需要的
name字段,与预期输出结构不符 - 未区分当前XML中不同节点的作用:顶层
Code、Message为单值字段,ExtendedStatus为重复数组元素,原有逻辑直接把所有子节点统一归到extendedMessages,逻辑错误 - 字段名未做映射,XML节点名首字母大写,预期JSON字段名首字母小写
- 文本节点处理逻辑错误,无法正确提取
Code节点的内容到对应字段
调整后可运行代码
def toJsonBuilder(String xml) { def root = new XmlParser().parseText(xml) // 直接按给定XML结构组装目标对象 def result = [ code: root.Code.text(), message: root.Message.text(), extendedMessages: root.ExtendedStatus.collect { statusNode -> [ code: statusNode.Code.text(), message: statusNode.Message.text() ] } ] new groovy.json.JsonBuilder(result) } // 调用示例,xml1替换为你的XML字符串 println toJsonBuilder(xml1).toPrettyString()
输出验证
运行代码后得到的结果与需求完全一致:
{ "code": "BUSINESS_EXCEPTION", "message": "Invalid postcode - Invalid state", "extendedMessages": [ { "code": "48", "message": "Invalid Postcode" }, { "code": "12", "message": "Invalid State" } ] }
内容的提问来源于stack exchange,提问作者ray
相关产品推荐
相关产品推荐

