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

问题描述 投票:3回答:1
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?是否有一种方法/设置使JSON.NET覆盖List而不是添加元素?

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

c# json json.net
1个回答
10
投票

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

var settings = new JsonSerializerSettings
{
    ObjectCreationHandling = ObjectCreationHandling.Replace
};

var myInstance = JsonConvert.DeserializeObject<MyClass>("{myList:[1,2,3]}", settings);
© www.soinside.com 2019 - 2024. All rights reserved.