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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:52:54