简体   繁体   English

两个字段,一个名称为jsonproperty

[英]two fields, one name jsonproperty

I have an interface A which has two methods with different jsonproperty (ref: com.fasterxml.jackson.annotation.JsonProperty) names 我有一个接口A,该接口具有两个方法,它们具有不同的jsonproperty(ref:com.fasterxml.jackson.annotation.JsonProperty)名称

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

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

I need to create two more interfaces class B and C which will inherit from A. 我需要再创建两个继承自A的接口类B和C。

While B wants to include field_1 and discard field_2, C wants field_2 and discard field_1. B想要包含field_1并丢弃field_2,而C想要field_2并丢弃field_1。 Also, both want to give the same name to their preferred fields, lets say, "field_3". 而且,两个人都希望为其首选字段赋予相同的名称,比如说“ field_3”。

You can use @JsonIgnore to discard fields and B and C can override @JsonProperty of A as shown below. 您可以使用@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";
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM