У меня есть веб-приложение Spring, работающее с версией 4.3.6
. Он работает с XML и JSON до определенного момента.
- Для Json я использую Jackson.
- Для XML я раньше работал с
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. проект
Чтобы сериализовать Date
для JSON, я использую:
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