首頁  >  文章  >  Java  >  如何選擇性地從 JSON 序列化中排除字段而不影響反序列化?

如何選擇性地從 JSON 序列化中排除字段而不影響反序列化?

DDD
DDD原創
2024-11-24 13:28:12520瀏覽

How Can I Selectively Exclude Fields from JSON Serialization Without Affecting Deserialization?

@JsonIgnore 的選擇性應用:解決僅序列化排除

在與伺服器進行資料交換期間,使用者物件可能包含以下敏感訊息:在序列化期間應該對客戶端隱藏。經常使用的方法是應用 @JsonIgnore 註解來隱藏敏感屬性。但是,這也會幹擾反序列化,從而在特定場景中帶來挑戰。

了解問題

屬性上的 @JsonIgnore 註解會阻止將其包含在 JSON 序列化中。但是,如果反序列化期間需要相同的屬性(例如,建立使用者帳戶),則排除會出現問題。

使用@JsonIgnore進行選擇性排除

解決對於這個問題,根據使用的Jackson 版本可以採取兩種不同的方法:

Jackson 1.9先前的版本:

  • 在Getter 上使用@JsonIgnore: 僅註釋getter 方法可以允許在反序列化過程中包含該屬性,並在序列化過程中排除該屬性。

Jackson 版本1.9 和後來:

  • @JsonProperty with READ_ONLY: 透過將註解參數@Json(access =Property) JsonProperty.Access.READ_ONLY) 加入setter,您可以指定屬性僅可寫入且在期間被排除序列化。

範例:

考慮密碼欄位的使用者物件:

@JsonIgnore
private String password;

// Setter with READ_ONLY access (Jackson 1.9 and later)
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
public void setPassword(String password) {
    this.password = password;
}

注意:

  • 注意:
注意:注意: >使用READ_ONLY確保密碼僅用於反序列化。 兩種方法均已驗證且如預期運作。

以上是如何選擇性地從 JSON 序列化中排除字段而不影響反序列化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn