杰克逊子类覆盖字段

时间:2017-05-04 11:12:36

标签: java jackson

我有2个班级

public class A {
    protected String id;
}

public class B extends A {
    private String bval;
}

我们收到的B类的JSON有一个不同名称的id,是否有办法告诉jackson在classB中使用不同的属性名而不是在classA中?

2 个答案:

答案 0 :(得分:0)

Obe的方法是使用“任何setter”功能,其中Jackson被告知为所有“未知”属性调用方法。然后,您可以自己完成任务:

public class B extends A {

  // all unknown properties will go here
  @JsonAnySetter
  public void setUnknownProperty(String key, Object value) {
      if (key.equals("anotherNameForId")) {
          id = (String)value;
      }
  } 

答案 1 :(得分:0)

我在使用lombok

@Getter(onMethod = @__( @JsonProperty("id")))

和B组

@Override
@JsonProperty("bID")
public String getId(){
    return this.id;
}