我有一个使用4.3.6
版本的Spring Web应用程序。它适用于XML和JSON,直到某些时候。
JAXB2
,但现在不再使用,因为它不支持通用集合表示通用集合,例如:
public class GenericCollection<T> {
private Collection<T> collection;
public GenericCollection(){
this.collection = new LinkedHashSet<>();
}
public GenericCollection(Collection<T> collection){
this.collection = collection;
}
...
因此,对于XML
,应用程序已从JABX2
移至Jackson
处理jackson-dataformat-xml项目
要为JSON序列化Date
,我使用:
public class JsonDateSerializer extends JsonSerializer<Date> {
private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
/**
* {@inheritDoc}
*/
@Override
public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers)
throws IOException, JsonProcessingException {
String formattedDate = dateFormat.format(value);
gen.writeString(formattedDate);
}
}
并使用了如何:
@JsonProperty("fecha")
@JsonSerialize(using=JsonDateSerializer.class)
public Date getFecha() {
return fecha;
}
对于XML,当使用JAXB2
时,再次对Date
序列化使用以下 :
public class XmlDateAdapter extends XmlAdapter<String, Date> {
private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
/**
* {@inheritDoc}
*/
@Override
public Date unmarshal(String v) throws Exception {
return dateFormat.parse(v);
}
/**
* {@inheritDoc}
*/
@Override
public String marshal(Date v) throws Exception {
return dateFormat.format(v);
}
}
并使用了如何:
@JsonProperty("fecha")
@JsonSerialize(using=JsonDateSerializer.class)
@XmlElement(name="fecha")
@XmlJavaTypeAdapter(XmlDateAdapter.class)
public Date getFecha() {
return fecha;
}
由于从Jaxb2
迁移到jackson-dataformat-xml
,我知道后者会忽略 JAXB2
注释。因此现在工作:
@JsonProperty("fecha")
@JsonSerialize(using=JsonDateSerializer.class)
@JacksonXmlProperty(localName="fecha")
@XmlJavaTypeAdapter(XmlDateAdapter.class)
public Date getFecha() {
return fecha;
}
因此从@XmlElement(name="fecha")
到@JacksonXmlProperty(localName="fecha")
现在的问题是@XmlJavaTypeAdapter(XmlDateAdapter.class)
也被忽略了。
问题:
从@XmlJavaTypeAdapter
到JAXB2
jackson-dataformat-xml
的等效注释是什么?