簡體   English   中英

Json / Jackson命名約定

[英]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將包含兩個屬性statusrestoreStatus 如果要在輸出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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM