2013-11-21 112 views
2

我很难与这一个。杰克逊2.2 XML序列化似乎序列化空对象的字段是这样的:杰克逊xml空元素序列化

<field/> 

我怎样才能迫使它序列化这样的空场是这样的:

<field></field> 

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

回答

1

请查看此问题: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(""); 
    } 
} 

和简单的用法:

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

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

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

上面的程序打印:

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

事实上,这做的伎俩。非常感谢你。 – William