Джексон jaxb бросает com.faster xml .jackson.databind.JsonMappingException: конфликт определений получателя для свойства - PullRequest
0 голосов
/ 07 мая 2020

Перенос 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

...