首頁 > 後端開發 > C++ > 如何使用 Json.net 反序列化基本類型和派生類型清單並保留其實際類型?

如何使用 Json.net 反序列化基本類型和派生類型清單並保留其實際類型?

DDD
發布: 2025-01-21 18:35:09
原創
862 人瀏覽過

How Can I Deserialize a List of Base and Derived Types Using Json.net and Preserve Their Actual Types?

使用Json.net反序列化衍生型別

假設您有一個基底類別Base和一個衍生類別Derived,其中Derived繼承自Base。您有一個Base物件的列表,其中包含BaseDerived的實例。當您反序列化此清單的JSON表示形式時,您希望將派生類型檢索為其實際類型,而不僅僅是作為Base物件。

為了實現這一點,Json.net提供了一個稱為型別名稱處理的功能。透過啟用此功能並將其作為設定參數傳遞給序列化和反序列化操作,您可以指定物件類型應包含在序列化的JSON中。

<code class="language-csharp">Base object1 = new Base() { Name = "Object1" };
Derived object2 = new Derived() { Something = "Some other thing" };
List<Base> inheritanceList = new List<Base>() { object1, object2 };

JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
string Serialized = JsonConvert.SerializeObject(inheritanceList, settings);
List<Base> deserializedList = JsonConvert.DeserializeObject<List<Base>>(Serialized, settings);</code>
登入後複製

反序列化後,deserializedList將包含正確類型的BaseDerived物件。但是,啟用類型名稱處理有一個缺點:它會將所有物件和清單的名稱包含在序列化的JSON中,這在某些情況下可能並不理想。

以上是如何使用 Json.net 反序列化基本類型和派生類型清單並保留其實際類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板