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

mko*_*zun 25 java json jackson

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

sab*_*ver 35

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


pyb*_*pyb 7

来晚了...

通过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
}
Run Code Online (Sandbox Code Playgroud)

  • 这不是使用Optional的正确方法,它应该用作方法返回类型而不是成员字段的类型。 (2认同)