Jackson 注释覆盖 parent class 中的注释

Jackson annotation to override the one in parent class

我希望我所有的 objects 都有一个 ID,我希望为一些 child class 序列化它,但不为其他一些

例如:

public class A {
  protected Long id;
  ..getter and setter
}

public class B extends A {

  @Override
  @JsonIgnore
  public Long getId() {..}

  @Override
  @JsonIgnore
  public void setId(Long id) {..}

}

public class C extends B {

  @Override
  @JsonInclude
  public Long getId() {..}

  @Override
  @JsonInclude
  public void setId(Long id) {..}
}

public class Test {

  Set<C> tests ...
  ..getter setter
}

我已尝试序列化测试,但 JSON 字符串不包含 ID 如果我从 B 中删除 JsonIgnore,那么在这种情况下 ID 就在那里。

jackson 有办法存档吗?

使用

@JsonIgnore(false)

而不是

@JsonInclude