仅在Java中的序列化上重命名字段

时间:2019-01-30 06:10:46

标签: java json spring serialization annotations

我有一个名为AddOnsSRO的对象。仅在序列化时才希望更改对象的字段名称。

尝试在getter方法上使用@JsonProperty,但即使在不涉及序列化的用法下,它也为我提供了重命名的字段。

public class AddOnsSRO {

    private String sideCar;
    private String sideCarCoverage;

    @JsonSerialize
    @JsonProperty("abc")
    public String getSideCar() {
        return sideCar;
    }

    public void setSideCar(String sideCar) {
        this.sideCar = sideCar;
    }

    @JsonSerialize
    @JsonProperty("xyz")
    public String getSideCarCoverage() {
        return sideCarCoverage;
    }

    public void setSideCarCoverage(String sideCarCoverage) {
        this.sideCarCoverage = sideCarCoverage;
    }
}

仅在序列化中,以下字段:sideCarsideCarCoverage必须分别重命名为abcxyz

对于除序列化之外的任何其他用途,字段名称仅应为sideCarsideCarCoverage

请帮助并提出相应的更改或注释。

2 个答案:

答案 0 :(得分:1)

要仅实现序列化,请使用@JsonGetter而不是@JsonProperty

@JsonGetter("abc")
public String getSideCar() {
    return sideCar;
}
  

Getter表示,当序列化具有此方法的类的Object实例(可能从超类继承)时,将通过该方法进行调用,并将返回值序列化为属性的值。

您可以将@JsonSetter添加到setter方法中以进行反序列化:

@JsonSetter("sideCar")
public void setSideCar(String sideCar) {
    this.sideCar = sideCar;
}

答案 1 :(得分:0)

您的代码看起来不错...如果您使用的是旧版本,请升级您的jackson lib ...