我正在寻找一个注释来为XML响应执行与JSON响应相同的操作,即将日期转换为毫秒。对于JSON响应,我会这样做:
@JsonDeserialize(using = DateToMillisecsDeserializer.class)
private Long millisecs;
然后@Override在DateToMillisecsDeseriliazer类中反序列化以转换日期。
如何为XML响应完成同样的事情?
谢谢!
答案 0 :(得分:1)
XML的@XmlJavaTypeAdapter
注释
大致相当于@JsonDeserialize
和@JsonSerialize
一起用于JSON。
它指的是XmlAdapter
类
这相当于JsonDeserializer
和JsonSerializer
课程一起。
示例:强>
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));
}
}