Перенос jersey (com.sun.jersey) 1.15 на jersey (org.glassfi sh .jersey) 2.30 и использование Jackson (jersey-media- json -jackson) для JAXB
And We иметь POJO, например
@XmlRootElement(name = "pojo")
class Pojo {
@XmlElementWrapper(name = "activeCustomers")
@XmlElement(name = "customer")
public List<Customer> getActiveCust() {
return activeCustomers;
}
@XmlElementWrapper(name = "deactivatedCustomers")
@XmlElement(name = "customer")
public List<Customer> getDeactivatedCustomers() {
return deactivatedCustomers;
}
}
Ожидаемый XML:
<pojo>
<activeCustomers>
<customer>A</customer>
<customer>B</customer>
<customer>C</customer>
</activeCustomers>
<deactivatedCustomers >
<customer>X</customer>
<customer>Y</customer>
<customer>Z</customer>
</deactivatedCustomers >
</pojo>
Ожидаемый JSON
pojo : {
activeCustomers : [
customer: [ {}, {} ]
],
deactivatedCustomers : [
customer: [ {}, {} ]
]
}
И возвращение этой сущности в качестве ответа на GET api, но при обработке ответа ниже исключение
com.faster xml .jackson.databind.JsonMappingException: Конфликт определений получателя для свойства «клиент»:
не сталкивался с этой проблемой в jersey1.x, но столкнулся с проблемой в jersey 2.x и зарегистрированными функциями приложения:
register(JacksonFeature.class);
register(MultiPartFeature.class);
пожалуйста, помогите мне, как я могу решить эту проблему проблема без изменения имен элементов xml и, вероятно, без добавления новых аннотаций (там может быть сотни случаев). Если необходимо зарегистрировать какие-либо дополнительные функции и требуется ли создавать новые настраиваемые сопоставители?
Jersey version : 2.30
com.fasterxml.jackson version: 2.9.10
проблема возникает только в том случае, если Accept - это приложение / json, все работает нормально, если Accept - это приложение / xml