Jackson annotation to override the one in parent c

2019-07-23 15:01发布

问题:

I would like all my objects to have an ID and I wish to serialise it for some child class but not for some others

for example:

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
}

I have tried serialising Test but the JSON string doesn't include the IDs If I remove the JsonIgnore from B then in that case the Ids are there.

Is there a way with jackson to archive this?

回答1:

Use

@JsonIgnore(false)

instead of

@JsonInclude