2015-09-26 98 views
2

Web服务返回具有几乎1:1映射到android.location.Address字段的属性的“位置”对象。我写了一个自定义的反序列化器来处理它们,并且它可以工作。JsonDeserializer#反序列化(...)是否允许返回null?

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

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

我没有简单地测试了自己,因为:除非它的记录

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

回答

3

JsonDeserializer#deserialize被允许通过JsonDeserializer类的设计返回null,虽然它没有明确的方法的Javadoc中提及。

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

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

return getNullValue(); 

JsonToken是分别null或为空。默认情况下,它们返回null,那将返回deserialize

请参阅heregetNullValue的示例。