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

XML中替代@JsonDeserialize实现日期转毫秒的注解方案

在XML响应中实现日期转毫秒数的自定义转换

好问题!在XML序列化/反序列化场景下,我们通常用**JAXB(Java Architecture for XML Binding)**来实现类似Jackson的自定义转换逻辑,和你用@JsonDeserialize的思路本质一致,只是注解与实现方式略有不同,具体步骤如下:

1. 创建自定义XML适配器(类似JSON的Deserializer)

你需要编写一个继承自XmlAdapter的适配器类,它负责处理XML中的日期与毫秒数之间的转换逻辑:

import javax.xml.bind.annotation.adapters.XmlAdapter;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateToMillisecsXmlAdapter extends XmlAdapter<String, Long> {
    // 替换为你实际使用的日期格式,比如"yyyy-MM-dd'T'HH:mm:ss"
    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    public Long unmarshal(String dateStr) throws Exception {
        // 将XML中的日期字符串解析为Date,再转换为毫秒数
        Date date = DATE_FORMAT.parse(dateStr);
        return date.getTime();
    }

    @Override
    public String marshal(Long millisecs) throws Exception {
        // (可选)如果需要将毫秒数序列化为XML日期字符串,实现此方法
        if (millisecs == null) {
            return null;
        }
        Date date = new Date(millisecs);
        return DATE_FORMAT.format(date);
    }
}

2. 在实体类字段上绑定适配器

和Jackson的@JsonDeserialize类似,用@XmlJavaTypeAdapter注解将适配器绑定到目标字段上:

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class YourEntity {
    // 绑定自定义适配器,实现XML日期到毫秒数的转换
    @XmlJavaTypeAdapter(DateToMillisecsXmlAdapter.class)
    private Long millisecs;

    // 其他字段、Getter/Setter方法...
}

额外说明

  • 如果XML中的日期是标准XML Schema的dateTime类型(而非字符串),可以将适配器的泛型改为XmlGregorianCalendar,调整unmarshal方法的解析逻辑即可。
  • 适配器同时支持反序列化(XML→毫秒数)和序列化(毫秒数→XML),如果只需要反序列化,marshal方法可以返回null,但建议完整实现以避免潜在的序列化问题。
  • 确保项目中已引入JAXB依赖:Spring Boot项目默认包含相关依赖;普通Java项目需引入jakarta.xml.bind:jakarta.xml.bind-api及实现包(如org.glassfish.jaxb:jaxb-runtime)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:56:23