将JSON反序列化为C#集合

将JSON反序列化为C#集合,c#,json,serialization,C#,Json,Serialization,我正在使用Newtonsoft.Json将我的C#对象序列化/反序列化到Json中。 我的C#对象具有以下类型的属性: List<BaseClass> objects { get; set; } 列出对象{get;set;} 此集合包含不同的子对象(例如-ChildClass1、ChildClass2) 序列化为JSON效果很好,但反序列化时会在集合中创建基类的对象(很明显:) 有没有一种方法可以在反序列化时创建具体的子对象? 我尝试通过实现CustomCreationConve

我正在使用Newtonsoft.Json将我的C#对象序列化/反序列化到Json中。 我的C#对象具有以下类型的属性:

List<BaseClass> objects { get; set; }
列出对象{get;set;}
此集合包含不同的子对象(例如-ChildClass1、ChildClass2)

序列化为JSON效果很好,但反序列化时会在集合中创建基类的对象(很明显:)

有没有一种方法可以在反序列化时创建具体的子对象? 我尝试通过实现
CustomCreationConverter
来创建自定义转换器。但问题是,Create方法只给了我类型,因此我无法决定返回哪个对象(ChildClass1或ChildClass2)

我的JSON字符串有一个Type属性,通过它我可以识别要创建的子对象


非常感谢您的帮助

您可以使用
TypeNameHandling
选项:

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

JsonConvert.SerializeObject(myObject, Formatting.Indented, settings );
TypeNameHandling选项“Auto”确保序列化JSON中包含类型名 对于子类。但是要注意:当类或它们的名称空间被重命名时,这些名称将变得无效