访问器方法是否需要@JsonProperty 注释?

edw*_*yte 5 java jackson

我继承了以下内容:

import com.fasterxml.jackson.annotation.JsonProperty;
public class MyClass {
  @JsonProperty("id")
  private String id;

  @JsonProperty("id")
  public String getId(){
    ...code...
  }

  @JsonProperty("id")
  public String setId(String id) {
    ...code...
  }
}
Run Code Online (Sandbox Code Playgroud)

getter 和 setter 是否需要重复的 JsonProperty 注释,或者如果我只注释私有成员,jackson 会自动处理序列化/反序列化吗?

Sta*_*Man 5

在您的示例中,使用默认ObjectMapper设置,在使用 Jackson 1.8 或更高版本时不需要注释。

Jackson 可以从公共 getter(如“public int getValue()”)、setter(“public void setValue(int v);”和字段(“public int value;”)中自动检测属性。此外,只要一个找到公共 setter、getter 或字段,然后匹配但(否则)不可见的 setter/字段也包括在内。

但是请注意,旧的 Jackson 版本(1.7 及更早版本)没有做第二部分,并且 setter 和 getter 都需要公开。