我有一个名为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
。
请帮助并提出相应的更改或注释。
答案 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 ...