两个字段,一个名字 jsonproperty

two fields, one name jsonproperty

我有一个接口 A,它有两个具有不同 jsonproperty(参考:com.fasterxml.jackson.annotation.JsonProperty)名称的方法

public interface  A {
  @JsonProperty("field_1")
    String getField1();

    @JsonProperty("field_2")
    String getField2();
}

我需要再创建两个接口 class B 和 C,它们将从 A 继承。

虽然 B 想要包含 field_1 并丢弃 field_2,但 C 想要 field_2 并丢弃 field_1。此外,两者都希望为其首选字段指定相同的名称,比方说,"field_3".

您可以使用 @JsonIgnore 丢弃字段,BC 可以覆盖 A@JsonProperty,如下所示。

    public interface A {

    @JsonProperty("field_1")
    String getField1();

    @JsonProperty("field_2")
    String getField2();
}

public class B implements A {

    @Override
    @JsonProperty("field_B")
    public String getField1() {
        return "field1";
    }

    @Override
    @JsonIgnore
    public String getField2() {
        return "field2";
    }

}

public class C implements A {

    @Override
    @JsonIgnore
    public String getField1() {
        return "field1";
    }

    @Override
    @JsonProperty("field_C")
    public String getField2() {
        return "field2";
    }

}