发生这种情况的原因是由于两件事的结合:
- 您的类构造函数会自动将默认项添加到其各自的列表中。Json.Net调用这些相同的构造函数在反序列化期间创建对象实例。
- Json.Net的默认行为是在反序列化期间重用(即添加到)现有列表,而不是替换它们。
要解决此问题,您可以更改代码,以使构造函数不会自动将默认项添加到列表中,或者可以配置Json.Net以在反序列化时替换列表,而不是重复使用它们。可以通过将
ObjectCreationHandling设置更改
Replace为如下所示来完成后者:
JsonSerializerSettings settings = new JsonSerializerSettings();settings.ObjectCreationHandling = ObjectCreationHandling.Replace;var database = JsonConvert.DeserializeObject<Database>(www.text, settings);
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)