首頁 >後端開發 >C++ >如何使用 JSON.NET 反序列化介面實例集合?

如何使用 JSON.NET 反序列化介面實例集合?

Barbara Streisand
Barbara Streisand原創
2025-01-06 07:00:40362瀏覽

How to Deserialize Collections of Interface Instances Using JSON.NET?

反序列化介面實例集合

嘗試使用JSON.NET 序列化和反序列化介面實例集合時,重要的是要解決反序列化期間的類型識別問題。在這種情況下遇到的錯誤訊息表示無法直接實例化介面或抽象類別。

自訂類型綁定器方法

一種建議的方法涉及使用自訂類型解析器綁定器。這涉及建立一個實作 ITypeResolver 介面的自訂類,並在反序列化期間將其提供給 JsonSerializer。自訂綁定器將負責根據介面類型解析具體類型。

JSON.NET 預設設定

但是,使用 JSON.NET,這是可能的無需自訂綁定器即可實現反序列化。透過調整 JsonSerializerSettings 物件中的 TypeNameHandling 和 TypeNameAssemblyFormat 設定,JSON.NET 可以在序列化和反序列化過程中自動處理類型識別。

序列化

序列化時,指定下列的設定:

string serializedJson = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects,
    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
});

反序列化

反序列化時,使用以下設定:

var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects
});

使用這些設置,JSON.NET將自動根據序列化期間提​​供的類型資訊識別介面實例的特定類型。這允許對包含實現不同介面的物件的集合進行無縫反序列化。

以上是如何使用 JSON.NET 反序列化介面實例集合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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