JsonDeserializer #deserialize(...)是否允许返回null?

时间:2015-09-26 19:57:45

标签: jackson

Web服务返回“location”对象,其属性几乎以1:1的形式映射到android.location.Address的字段。我已经编写了一个自定义反序列化程序来处理它们,它可以工作。

有时,Web服务返回垃圾位置,即纬度0.0,经度0.0,其他字段为空字符串。我希望将这些垃圾位置反序列化为Java null

允许JsonDeserializer#deserialize(...)返回null

我自己并没有简单地测试过这个,因为:

  • 除非记录在案,否则杰克逊特定版本的行为不是保证。
  • 写这个问题比模拟伪造输入或写一个单独的测试应用程序更快。
  • 答案可能对其他人有益。

1 个答案:

答案 0 :(得分:3)

允许

JsonDeserializer#deserialize通过null类的设计返回JsonDeserializer,尽管在方法的Javadoc中没有明确提及它。

这可以通过方法JsonDeserializer#getNullValueJsonDeserializer#getEmptyValue的存在,默认实现和文档来假设。

可以调用这些方法来生成deserialize的返回值,例如

return getNullValue();

JsonToken分别为null或空时。默认情况下,它们会返回null,并由deserialize返回。

使用getNullValue查看here示例。