猿问

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

我有一个名为 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;

    }

}

仅在序列化时,以下字段 :sideCar和sideCarCoverage必须分别重命名为abc和xyz。


对于除序列化之外的任何其他用途,字段名称应该是sideCar且sideCarCoverage仅。


请帮助并建议相应的更改或注释。


郎朗坤
浏览 224回答 2
2回答

MMTTMM

为了只影响序列化,请使用@JsonGetter而不是@JsonProperty@JsonGetter("abc")public String getSideCar() {    return sideCar;}Getter 是指在序列化具有该方法的类的 Object 实例时(可能继承自超类),通过该方法进行调用,并将返回值序列化为属性值。您可以添加@JsonSetter到 setter 方法进行反序列化:@JsonSetter("sideCar")public void setSideCar(String sideCar) {    this.sideCar = sideCar;}

陪伴而非守候

您的代码看起来不错...请升级您的杰克逊库...如果您使用的是旧的
随时随地看视频慕课网APP

相关分类

Java
我要回答