繁体   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