我正在使用Newtonsoft.Json将我的C#对象序列化/反序列化为JSON。 我的C#对象具有以下类型的属性:
List<BaseClass> objects { get; set; }
此集合包含不同的子对象(例如 - ChildClass1,ChildClass2)。
序列化为JSON工作正常,但反序列化时会在集合中创建BaseClass的对象(很明显:):)。
有没有办法在反序列化时创建具体的子对象?
我尝试通过实现CustomCreationConverter<BaseClass>
来创建自定义转换器。但问题被覆盖Create方法只给我类型并基于我无法决定返回哪个对象(ChildClass1或ChildClass2)
我的JSON字符串有一个Type属性,通过它我可以识别要创建的子对象。
非常感谢任何帮助。
答案 0 :(得分:0)
您可以使用TypeNameHandling
选项:
var settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Auto }
JsonConvert.SerializeObject(myObject, Formatting.Indented, settings );
TypeNameHandling选项&#34; Auto&#34;确保类型名称包含在序列化的JSON中 对于子类。但请注意:重命名类或名称空间时,这些名称将无效!