【问题标题】:Json.Net PopulateObject Appending list rather than setting valueJson.Net PopulateObject 追加列表而不是设置值
【发布时间】:2013-11-28 15:52:24
【问题描述】:

我在 .Net 4.5 中使用 Json.Net,当在以下对象上使用填充对象时,它会使用 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"

【问题讨论】:

    标签: c# .net json json.net


    【解决方案1】:

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

    var serializerSettings = new JsonSerializerSettings {ObjectCreationHandling = ObjectCreationHandling.Replace};
    
    
    JsonConvert.PopulateObject(jasonString, myObject, serializerSettings)
    

    【讨论】:

    • 可能值得注意的是,JsonPropertyAttribute 上提供了相同的 ObjectCreationHandling 选项,只允许一个属性产生效果:[JsonProperty(ObjectCreationHandling = ObjectCreationHandling.Replace)]
    猜你喜欢
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 2019-10-13
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 2023-03-28
    • 2017-01-28
    相关资源
    最近更新 更多