[英]Json/Jackson naming convention
我的異常類如下所示,當使用jackson進行序列化時,當我嘗試對其進行反序列化時,成員分別被稱為“ message”和“ restoreStatus ”,我期望它們分別為“ message”和“ status ”。
為什么傑克遜選擇將我的狀態變量命名為restoreStatus?傑克遜/ json命名約定如何工作?
@XStreamAlias("RestoreInProgressException")
public class RestoreInProgressException extends HostManagerException {
private static final long serialVersionUID = xxxx;
private RestoreStatus status;
@JsonCreator
public RestoreInProgressException(@JsonProperty("message") String message, @JsonProperty("status") RestoreStatus status) {
super(message, HttpStatus.SC_CONFLICT);
this.status = status;
}
public RestoreStatus getRestoreStatus() {
return this.status;
}
}
請參閱此問題基於Jackson字段的序列化,以找到一些有關Jackson算法中序列化算法如何工作的信息。 在您的示例中,您具有status
屬性,但具有getRestoreStatus
getter方法。 Jackson將從類中讀取所有getter方法,並嘗試對其進行序列化。 如果您使用@JsonProperty
或@JsonProperty("status")
注釋,Jackson還將其status
屬性添加到輸出JSON中。 在這種情況下,您的輸出Jackson將包含兩個屬性status
和restoreStatus
。 如果要在輸出JSON中僅包含status
屬性,則必須:
I.將您的getter方法名稱更改為getStatus
:
public RestoreStatus getStatus() {
return this.status;
}
二。 將注解@JsonProperty("status")
到您的方法中:
@JsonProperty("status")
public RestoreStatus getRestoreStatus() {
return this.status;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.