JSON.NET为什么它添加到列表而不是覆盖?

public class MyClass { public List myList = new List { 1337 }; public MyClass() {} } var myClass = JsonConvert.DeserializeObject("{myList:[1,2,3]}"); Console.WriteLine(string.Join(",", myClass.myList.ToArray())); //1337,1,2,3 

为什么它显示1337,1,2,3而不是1,2,3? 有没有办法/设置让JSON.NET覆盖List而不是添加元素?

我需要一个不修改构造函数的解决方案。

如果您不想要此行为,可以通过传入JSONSerializerSettings对象来更改它,该对象指定您不想重用实例成员中的现有对象:

 var settings = new JsonSerializerSettings { ObjectCreationHandling = ObjectCreationHandling.Replace }; var myInstance = JsonConvert.DeserializeObject("{myList:[1,2,3]}", settings);