为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

郎朗坤 2022-05-25 17:08:58
我有一个名为 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仅。请帮助并建议相应的更改或注释。
查看完整描述

2 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

为了只影响序列化,请使用@JsonGetter而不是@JsonProperty


@JsonGetter("abc")

public String getSideCar() {

    return sideCar;

}

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


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


@JsonSetter("sideCar")

public void setSideCar(String sideCar) {

    this.sideCar = sideCar;

}


查看完整回答
反对 回复 2022-05-25
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

您的代码看起来不错...请升级您的杰克逊库...如果您使用的是旧的



查看完整回答
反对 回复 2022-05-25
  • 2 回答
  • 0 关注
  • 223 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号