使用Json.Net反序列化屬性而不序列化
在某些情況下,您可能需要從已序列化的JSON物件反序列化屬性,但又不想在序列化時將其寫回。以下是如何使用Json.Net實現此目的的方法。
方法一:ShouldSerialize方法
Json.Net允許您透過在類別中定義ShouldSerialize方法有條件地序列化屬性。建立一個ShouldSerializeBlah()方法(其中Blah是您不想序列化的屬性),並使其始終傳回false:
<code>public bool ShouldSerializeObsoleteSetting() { return false; }</code>
方法二:使用JObject操作JSON
使用JObject.FromObject將物件載入到JObject中。在寫入JSON之前刪除不需要的屬性:
<code>JObject jo = JObject.FromObject(config); jo["ObsoleteSetting"].Parent.Remove(); json = jo.ToString();</code>
方法三:屬性濫用
將[JsonIgnore]屬性套用到您不想序列化的屬性。定義一個與原始屬性具有相同類型和名稱的私有屬性設定器,並使用相同的JSON名稱將[JsonProperty]屬性套用到它:
<code>[JsonIgnore] public Fizz ObsoleteSetting { get; set; } [JsonProperty("ObsoleteSetting")] private Fizz ObsoleteSettingAlternateSetter { set { ObsoleteSetting = value; } }</code>
透過使用上述方法之一,您可以選擇性地排除序列化中的屬性,同時仍允許反序列化。
以上是如何在不使用 Json.Net 序列化 JSON 屬性的情況下反序列化它們?的詳細內容。更多資訊請關注PHP中文網其他相關文章!