简体   繁体   中英

Jackson xml empty element serialization

I'm having a hard time with this one. Jackson 2.2 XML serializer seems to serialize empty object fields this way:

<field/>

How can I force it to serialize such empty field like this:

<field></field>

Thank you very much for your time and answers.

Please, see this question: How do you override the null serializer in Jackson 2.0? . For XmlMapper it could look like below. Create NullSerializer :

class NullSerializer extends JsonSerializer<Object> {

    @Override
    public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
        jgen.writeString("");
    }
}

and simple usage:

XmlSerializerProvider provider = new XmlSerializerProvider(new XmlRootNameLookup());
provider.setNullValueSerializer(new NullSerializer());

XmlMapper xmlMapper = new XmlMapper();
xmlMapper.setSerializerProvider(provider);

System.out.println(xmlMapper.writeValueAsString(new Entity()));

Above program prints:

<Entity xmlns=""><field></field></Entity>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM