Сериализация Java List в XML с использованием Jackson XML mapper
Привет, мне нужно создать XML из JAVA, используя Jackson-dataformat XMLMapper. XML должен быть как
<Customer>
<id>1</id>
<name>Mighty Pulpo</name>
<addresses>
<city>austin</city>
<state>TX</state>
</addresses>
<addresses>
<city>Hong Kong</city>
<state>Hong Kong</state>
</addresses>
</Customer>
Но я всегда получаю, как с дополнительным тегом
address>.<Customer>
<id>1</id>
<name>Mighty Pulpo</name>
<addresses>
<addresses>
<city>austin</city>
<state>TX</state>
</addresses>
<addresses>
<city>Hong Kong</city>
<state>Hong Kong</state>
</addresses>
<addresses>
</Customer>
Я использую приведенный ниже код для создания XML
JaxbAnnotationModule jaxbAnnotationModule = new JaxbAnnotationModule();
XmlMapper mapper = new XmlMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
mapper.registerModule(jaxbAnnotationModule);
mapper.registerModule(new GuavaModule());
String xml = mapper.writeValueAsString(customer);
System.out.println(xml);
Пожалуйста, кто-нибудь может мне помочь? Как я могу удалить дополнительный тег, пожалуйста. Я пытался использовать @XmlElement, но это не помогает. TIA!!
3 ответа
Решение
Попробуйте код ниже
@JacksonXmlRootElement(localName = "customer")
class Customer {
@JacksonXmlProperty(localName = "id")
private int id;
@JacksonXmlProperty(localName = "name")
private String name;
@JacksonXmlProperty(localName = "addresses")
@JacksonXmlElementWrapper(useWrapping = false)
private Address[] address;
//getters, setters, toString
}
class Address {
@JacksonXmlProperty(localName = "city")
private String city;
@JacksonXmlProperty(localName = "state")
private String state;
// getter/setter
}
Этот параметр изменяет поведение переноса по умолчанию, если вы не хотите иметь дело с аннотацией везде в вашем коде.
XmlMapper mapper = new XmlMapper();
mapper.setDefaultUseWrapper(false);
Просто, чтобы добавить к ответу ManojP, если добавление @JacksonXmlElementWrapper(useWrapping = false)
на объявление вашей переменной не работает (что было для меня), добавление его в метод getter добьется цели.