在Jackson中使用计算的默认值而不是null

时间:2013-04-22 20:49:59

标签: scala jackson default-value

我正在使用Jackson 2.1.3。 我的目标是在从JSON反序列化bean时为字段使用一些默认值。具体来说,我是在Scala上写的,所以我希望反序列化器使用字段的默认值,如果在JSON中没有指定字段,但在scala类的构造函数中指定了默认值。 我可以在运行时检索已知构造函数和索引或缺少参数名称的默认值,但我找不到在bean反序列化器中使用此值的方法。

我知道,这个问题在Jerkson中得到了解决,但首先我不能使用它,因为它不能在Scala 2.10上运行,其次他们通过使用自己的解串器来解决它,而不是Jacksons的BeanDeserializer - 所以他们失去了杰克逊的一些基本功能。

我尝试使用带有定义的“findDeserializer”方法的AnnotationIntrospector。我使用自定义“getNullValue”扩展了DelegatingDeserializer,但是委托人遇到了问题 - 我没有找到在“findDeserializer”方法上下文中获得良好反序列化的方法,而没有丢失某些类型信息。

然后我花了很多时间阅读Jackson的来源,我没有找到任何方法为bean反序列化的字段提供默认值,没有复制粘贴一半的Jackson库,在少数字段中使用弱访问修饰符。

0 个答案:

没有答案