Json.Net PopulateObject附加列表而不是设置值

时间:2013-11-28 15:52:25

标签: c# .net json json.net

我正在使用Json.Net for .Net 4.5,当在下面的对象上使用populate对象时,它会使用json的内容增加List,而不是设置它的值。

Json.Net

JsonConvert.PopulateObject(string, object)

class MySettingSubClass
{
    public List<string> MyStringList1 = new List<string>(){"one", "two", "three"}
}

class MySetting
{
    public string MyString = "MyString";
    public int MyInt = 5;
    public MySettingSubClass MyClassObject = new MySettingSubClass();
    public List<string> MyStringList2 = new List<string>{"one", "two", "three"};
}

当他们最初加载时,一切都是正确的,但是从JSON重新加载两个MyStringLists都是重复的"one", "two", "three", "one", "two", "three"

1 个答案:

答案 0 :(得分:32)

您应该告诉Json.Net替换数组,如下所示:

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


JsonConvert.PopulateObject(jasonString, myObject, serializerSettings)