Groovy脚本XML转JSON:如何将日期格式从dd-mm-yyyy转为yyyy-mm-dd?
解决方案
首先你需要明确哪些字段是需要转换格式的日期字段(比如DOB、RegistrationDate等),然后在现有脚本中添加日期转换逻辑即可。以下是修改后的完整脚本:
def inputXml = message.getBody(String.class); def parsed = new XmlSlurper().parseText(inputXml); // 定义需要转换格式的日期字段名,根据实际XML字段修改 def dateFields = ['DOB', 'JoinDate'] def values = ['Rows': parsed.'**'.findAll { it.name() == 'row' }.collect { element -> [Values: element.'**'.findAll { !it.childNodes() }.collect { field -> def fieldName = field.name() def fieldValue = field.text() // 判断是否为目标日期字段且值非空,是则转换格式 if (dateFields.contains(fieldName) && fieldValue) { try { // 解析dd-mm-yyyy格式,转换为yyyy-mm-dd def date = Date.parse('dd-MM-yyyy', fieldValue) date.format('yyyy-MM-dd') } catch (Exception e) { // 格式错误时返回原数值,避免脚本异常 fieldValue } } else { fieldValue } }] }] def fields = ['Columns': parsed.'**'.find { it.name() == 'row' }.collectMany { element -> element.'**'.findAll { !it.childNodes() }*.name() }] fields += values; def outputJson = new groovy.json.JsonBuilder(fields).toPrettyString(); message.setBody(outputJson);
关键修改说明:
- 指定日期字段:
dateFields数组中填写所有需要转换的日期字段名,需和XML中的字段名完全匹配。 - 日期格式转换:在收集字段值时,对目标日期字段做格式转换,同时加入异常捕获,避免因日期格式错误导致脚本中断。
- 原脚本的JSON结构生成逻辑完全保留,不会影响原有输出结构。
如果你的日期字段分隔符不是-(比如是/),只需把Date.parse里的格式字符串改成对应格式(比如dd/MM/yyyy)即可。
内容的提问来源于stack exchange,提问作者Aarti Dholiya
相关产品推荐
相关产品推荐

