JSON.NET 为什么它添加到列表而不是覆盖?
JSON.NET Why does it Add to List instead of Overwriting?
public class MyClass {
public List<int> myList = new List<int> { 1337 };
public MyClass() {}
}
var myClass = JsonConvert.DeserializeObject<MyClass>("{myList:[1,2,3]}");
Console.WriteLine(string.Join(",", myClass.myList.ToArray())); //1337,1,2,3
为什么显示1337,1,2,3而不是1,2,3?是否有 way/setting 使 JSON.NET 覆盖 List 而不是向其添加元素?
我需要一个不修改构造函数的解决方案。
如果您不想要这种行为,您可以通过传入一个 JSONSerializerSettings
对象来更改它,该对象指定您不想重用实例成员中的现有对象:
var settings = new JsonSerializerSettings
{
ObjectCreationHandling = ObjectCreationHandling.Replace
};
var myInstance = JsonConvert.DeserializeObject<MyClass>("{myList:[1,2,3]}", settings);
public class MyClass {
public List<int> myList = new List<int> { 1337 };
public MyClass() {}
}
var myClass = JsonConvert.DeserializeObject<MyClass>("{myList:[1,2,3]}");
Console.WriteLine(string.Join(",", myClass.myList.ToArray())); //1337,1,2,3
为什么显示1337,1,2,3而不是1,2,3?是否有 way/setting 使 JSON.NET 覆盖 List 而不是向其添加元素?
我需要一个不修改构造函数的解决方案。
如果您不想要这种行为,您可以通过传入一个 JSONSerializerSettings
对象来更改它,该对象指定您不想重用实例成员中的现有对象:
var settings = new JsonSerializerSettings
{
ObjectCreationHandling = ObjectCreationHandling.Replace
};
var myInstance = JsonConvert.DeserializeObject<MyClass>("{myList:[1,2,3]}", settings);