【问题标题】:How to define optional json field using Jackson如何使用 Jackson 定义可选的 json 字段
【发布时间】:2013-10-23 19:55:31
【问题描述】:

我有一个带有一个可选字段的对象,但找不到合适的注释来建模它。任何想法与杰克逊一起做的正确方法是什么?

【问题讨论】:

  • 默认情况下所有字段都是可选的。你遇到了什么问题?

标签: java json jackson


【解决方案1】:

在 Jackson 中,您无法区分可选字段和非可选字段。只需在 POJO 中声明任何字段。如果 JSON 结构中不存在某个字段,则 Jackson 不会调用 setter。您可以跟踪是否在 POJO 中使用标志调用了 setter。

【讨论】:

    【解决方案2】:

    聚会迟到了……

    通过 Spring HttpMessageConverter 4.3.6 使用 Jackson 2.8.6,我必须将我的 setter 参数更改为展开的类型,如下所示:

    class Foo {
        private Optional<Bar> bar;
    
        public void setBar(Bar bar) { // NOT Optional<Bar>, this gives me Optional.empty()
            this.bar = Optional.of(bar);
        }
    
        // getter doesn't need to be changed
    }
    

    【讨论】:

    • 不同的可选.. ;D
    • 我现在看到了:D
    • 这不是Optional的正确使用方式,它应该作为方法返回类型而不是成员字段的类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    相关资源
    最近更新 更多