我有一个名为 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
。
请提供帮助并提出相应的更改或注释建议。
最佳答案
仅影响序列化使用 @JsonGetter而不是@JsonProperty
@JsonGetter("abc")
public String getSideCar() {
return sideCar;
}
Getter means that when serializing Object instance of class that has this method (possibly inherited from a super class), a call is made through the method, and return value will be serialized as value of the property.
您可以将@JsonSetter
添加到setter方法中进行反序列化:
@JsonSetter("sideCar")
public void setSideCar(String sideCar) {
this.sideCar = sideCar;
}
关于java - 仅在 java 序列化时重命名字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54434294/