我使用Newtonsoft.Json将C#对象序列化/反序列化为JSON。我的C#对象具有以下类型的属性:
List<BaseClass> objects { get; set; }这个集合包含不同的子对象(例如- ChildClass1、ChildClass2)。
序列化到JSON很好,但是在反序列化的同时,它会在集合中创建BaseClass对象(这是显而易见的:)。
有办法在反序列化的同时创建具体的子对象吗?我尝试通过实现CustomCreationConverter<BaseClass>创建一个自定义转换器。但是问题被重写了,Create方法只给出了类型,基于这个类型,我无法决定返回哪个对象(ChildClass1还是ChildClass2)
我的JSON字符串有一个Type属性,通过它我可以标识要创建的子对象。
任何帮助都是非常感谢的。
发布于 2014-06-05 11:51:46
您可以使用TypeNameHandling选项:
var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }
JsonConvert.SerializeObject(myObject, Formatting.Indented, settings );TypeNameHandling选项"Auto“确保在子类的序列化JSON中包含类型名称。但是要注意:当类或它们的名称空间被重命名时,这些名称就无效了!
https://stackoverflow.com/questions/24059317
复制相似问题