如何使用Jackson定义可选的json字段

时间:2013-10-23 19:55:31

标签: java json jackson

我有一个带有一个可选字段的对象,但找不到合适的注释来对其进行建模。有什么想法与杰克逊合作的方法是什么?

2 个答案:

答案 0 :(得分:34)

在杰克逊,你无法区分可选字段和非可选字段。只需声明POJO中的任何字段即可。如果您的JSON结构中没有字段,那么Jackson将不会调用setter。你可以跟踪POJO中带有标志的setter。

答案 1 :(得分:6)

来晚会......

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

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
}