Java 如何覆盖Jackson 2.0中的空序列化程序?
我正在使用Jackson进行JSON序列化,我想重写null序列化程序——具体来说,就是将null值序列化为JSON中的空字符串,而不是字符串“null” 我找到的所有关于如何设置空序列化器的文档和示例都引用了Jackson 1.x——例如,位于库底部的代码不再使用Jackson 2.0进行编译,因为库中不再存在StdSerializerProvider。该网页描述了Jackson 2.0的模块接口,但模块接口没有明显的方法覆盖空序列化程序Java 如何覆盖Jackson 2.0中的空序列化程序?,java,json,jackson,Java,Json,Jackson,我正在使用Jackson进行JSON序列化,我想重写null序列化程序——具体来说,就是将null值序列化为JSON中的空字符串,而不是字符串“null” 我找到的所有关于如何设置空序列化器的文档和示例都引用了Jackson 1.x——例如,位于库底部的代码不再使用Jackson 2.0进行编译,因为库中不再存在StdSerializerProvider。该网页描述了Jackson 2.0的模块接口,但模块接口没有明显的方法覆盖空序列化程序 有人能提供一个关于如何在Jackson 2.0中重写空
有人能提供一个关于如何在Jackson 2.0中重写空序列化程序的指针吗?如下重写JsonSerializer序列化方法
public class NullSerializer extends JsonSerializer<Object> {
public void serialize(Object value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
// any JSON value you want...
jgen.writeString("");
}
}
或者使用@JsonSerialize
注释为某些属性指定它,例如:
public class MyClass {
@JsonSerialize(nullsUsing = NullSerializer.class)
private String property;
}
谢谢-这就是我要找的。注意两点:1)不需要扩展ObjectMapper;它的公共API允许设置空值序列化程序,以便只创建一个实例就足够了。2) Jackson 2.2.2中显然存在一个bug,它阻止使用树模型在空节点上调用空序列化程序;它只会被叫做波乔。维护人员告诉我这在2.3中已经修复。
public class MyClass {
@JsonSerialize(nullsUsing = NullSerializer.class)
private String property;
}