将JSON反序列化为C#集合

时间:2014-06-05 11:43:33

标签: c# json serialization

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

List<BaseClass> objects { get; set; }

此集合包含不同的子对象(例如 - ChildClass1,ChildClass2)。

序列化为JSON工作正常,但反序列化时会在集合中创建BaseClass的对象(很明显:):)。

有没有办法在反序列化时创建具体的子对象? 我尝试通过实现CustomCreationConverter<BaseClass>来创建自定义转换器。但问题被覆盖Create方法只给我类型并基于我无法决定返回哪个对象(ChildClass1或ChildClass2)

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用TypeNameHandling选项:

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

JsonConvert.SerializeObject(myObject, Formatting.Indented, settings );

TypeNameHandling选项&#34; Auto&#34;确保类型名称包含在序列化的JSON中 对于子类。但请注意:重命名类或名称空间时,这些名称将无效!