32

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

4

2 回答 2

45

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

于 2013-10-23T20:01:05.497 回答
8

聚会迟到了……

通过 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
}
于 2017-03-08T04:53:14.117 回答