我正在使用Spring开发新的REST API,我有BaseResponse
类作为所有响应的基本响应。此类包含属性String requestUuid;
,在某些情况下,此requestUuid
必须使用属性名称requestUuid
序列化,在其他情况下,必须将其归为request_uuid
,我知道我可以使用{ {1}}作为字段级注释,但它会影响所有响应。是否有任何方法可以专门为每个派生类重写属性名称。
答案 0 :(得分:4)
您可以在方法级别使用@JsonProperty
。这样,你可以在子类中覆盖字段的getter方法并注释它。
例如:
class BaseResponse {
private String requestUuid;
public getRequestUuid() {
return requestUuid;
}
}
class OtherResponse extends BaseResponse {
@Override
@JsonProperty("request_uuid")
public getRequestUuid() {
return super.getRequestUuid();
}
}
答案 1 :(得分:1)
您可以使用不同的密钥名称发送两次字段。
@JsonAnyGetter
public Map<String, Object> otherFields() {
Map<String, Object> otherFields = new HashMap<>();
otherFields.put("requestUuid", this.requestUuid);
otherFields.put("request_uuid", this.requestUuid);
return otherFields;
}
另外,请忽略您的实际字段:
@JsonIgnore
private String requestUuid;
答案 2 :(得分:-1)
不,它不可能,你可以为不同类型的请求创建新类。