[英]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.