William
William

Reputation: 75

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.

Upvotes: 4

Views: 7169

Answers (1)

Michał Ziober
Michał Ziober

Reputation: 38625

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>

Upvotes: 6

Related Questions