Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何覆盖Jackson 2.0中的空序列化程序?_Java_Json_Jackson - Fatal编程技术网

Java 如何覆盖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进行JSON序列化,我想重写null序列化程序——具体来说,就是将null值序列化为JSON中的空字符串,而不是字符串“null”

我找到的所有关于如何设置空序列化器的文档和示例都引用了Jackson 1.x——例如,位于库底部的代码不再使用Jackson 2.0进行编译,因为库中不再存在StdSerializerProvider。该网页描述了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;
}