java中json值不存在取默认值_java – 使用Jackson反序列化JSON时的隐式默认值

在反序列化各种

JSON消息时,我想为某种类型的属性提供默认值.简单地指定Class中的值是

generally suggested,但是如果必须在许多类中执行此操作,则这很容易出错.您可能会忘记一个并以null而不是默认值结束.我的目的是设置每个属于Optional< T>的属性.到Optional.absent.由于null正是Optional试图消除的,因此将它们与Jackson一起使用已被证明是令人沮丧的.

Jackson允许您自定义反序列化过程的大多数功能都集中在作为输入的JSON上,而不是围绕实例化您要反序列化的Object的过程.我似乎最接近一般解决方案是建立我自己的ValueInstantiator,但我还有两个问题:

>如何使其仅实例化可选为缺席但不干扰实例化过程的其余部分?

>如何将最终结果连接到我的ObjectMapper?

更新:我想澄清一点,我正在寻找一个不涉及修改包含Optional的每个Class的解决方案.我反对违反DRY原则.每当我们将Optional的添加到新的或现有的类时,我或我的同事不应该考虑必须做额外的事情.我希望能够说,“让我在每个Class中反序列化每个可选字段,预先填充Absent”,只需执行一次,并完成它.

这意味着以下内容:

>抽象父类(需要声明)

>自定义Builder / Creator / JsonDeserializer(需要在每个适用的类上进行注释)

> MixIn的?我尝试了这个,结合反射,但我不知道如何访问我被混入的类…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值