簡體   English   中英

將JSON反序列化為C#集合

[英]Deserialize JSON to C# collection

我正在使用Newtonsoft.Json將C#對象與JSON序列化/反序列化。 我的C#對象具有以下類型的屬性:

List<BaseClass> objects { get; set; }

該集合包含不同的子對象(例如-ChildClass1,ChildClass2)。

序列化為JSON可以正常工作,但是反序列化時會在集合中創建BaseClass對象(這很明顯:))。

反序列化時,有什么方法可以創建具體的子對象嗎? 我嘗試通過實現CustomCreationConverter<BaseClass>創建一個自定義轉換器。 但是問題卻被覆蓋了。Create方法只給我提供類型,因此無法確定要返回哪個對象(ChildClass1或ChildClass2)。

我的JSON字符串具有Type屬性,通過它可以標識要創建的子對象。

非常感謝您的幫助。

您可以使用TypeNameHandling選項:

var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }

JsonConvert.SerializeObject(myObject, Formatting.Indented, settings );

TypeNameHandling選項“自動”可確保類型名稱包含在子類的序列化JSON中。 但請注意:重命名類或其名稱空間后,這些名稱將無效!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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