繁体   English   中英

杰克逊。 将缺失的属性反序列化为空 Optional<T>

[英]Jackson. Deserialize missing properties as empty Optional<T>

假设我有一个这样的课程:

public static class Test {

    private Optional<String> something;

    public Optional<String> getSomething() {
        return something;
    }

    public void setSomething(Optional<String> something) {
        this.something = something;
    }
    
}

如果我反序列化这个 JSON,我会得到一个空的 Optional:

{"something":null}

但是如果缺少属性(在这种情况下只是空的 JSON),我会得到 null 而不是Optional<T> 我当然可以自己初始化字段,但我认为最好有一种机制来处理null和缺失的属性。 那么有没有办法让杰克逊将缺失的属性反序列化为空的Optional<T>

Optional 并不是真的要用作字段,而是更多地用作返回值。 为什么没有:

public static class Test {
  private String something;
  public Optional<String> getSomething() {
    return Optional.ofNullable(something);
  }
  public void setSomething(String something) {
    this.something = something;
  }
}

对于没有 getter/setter 的解决方案,请确保像这样初始化something

public Optional<String> something = Optional.empty();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM