XML的注释@JsonDeserialize的等价物

时间:2018-03-29 14:11:46

标签: java xml serialization jackson jaxb

我正在寻找一个注释来为XML响应执行与JSON响应相同的操作,即将日期转换为毫秒。对于JSON响应,我会这样做:

@JsonDeserialize(using = DateToMillisecsDeserializer.class)
private Long millisecs;

然后@Override在DateToMillisecsDeseriliazer类中反序列化以转换日期。

如何为XML响应完成同样的事情?

谢谢!

1 个答案:

答案 0 :(得分:1)

XML的@XmlJavaTypeAdapter注释 大致相当于@JsonDeserialize@JsonSerialize一起用于JSON。

它指的是XmlAdapter类 这相当于JsonDeserializerJsonSerializer课程一起。

示例:

XML元素之间的转换,如

<date>2018-03-29T20:00:00Z</date>

和一个Long Java字段,自1970年以来的毫秒数,可以像这样完成:

@XmlElement(name = "date")
@XmlJavaTypeAdapter(DateMillisecsAdapter.class)
private Long millisecs;

注释是指执行实际转换的适配器类。 方法unmarshal用于反序列化,marshal用于序列化。

public class DateMillisecsAdapter extends XmlAdapter<String, Long> {

    private DateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd'T'HH:mm:ssX");

    @Override
    public Long unmarshal(String s) throws Exception {
        if (s == null)
            return null;
        return dateFormat.parse(s).getTime();
    }

    @Override
    public String marshal(Long millisecs) throws Exception {
        if (millisecs == null)
            return null;
        return dateFormat.format(new Date(millisecs));
    }
}