Jackson xml空元素序列化

Wil*_*iam 4 java xml serialization jackson

我很难受这个问题。Jackson 2.2 XML 序列化器似乎以这种方式序列化空对象字段:

<field/>
Run Code Online (Sandbox Code Playgroud)

我怎样才能强制它序列化这样的空字段:

<field></field>
Run Code Online (Sandbox Code Playgroud)

非常感谢您的时间和答复。

Mic*_*ber 6

请参阅这个问题:How do you override the null serializer in Jackson 2.0? 。因为XmlMapper它可能如下所示。创造NullSerializer

class NullSerializer extends JsonSerializer<Object> {

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

和简单的用法:

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

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

System.out.println(xmlMapper.writeValueAsString(new Entity()));
Run Code Online (Sandbox Code Playgroud)

上面的程序打印:

<Entity xmlns=""><field></field></Entity>
Run Code Online (Sandbox Code Playgroud)