Newtonsoft.Json使用“添加”反序列化集合

时间:2017-06-21 11:47:31

标签: c# json.net

抱歉我的英文

当对象有一些“副作用”来改变属性时, 结果与反序列化之前的结果不同,

我知道序列化对象不应该有“副作用”, 但是我需要在这个时刻四处走动

JSON:

 {
   "SerializeBar": "bar1,bar2",
   "Bar": [
      "bar1",
      "bar2"  <-- only has 2 item
   ]
 }

反序列化:

var deserialzedObject = JsonConvert.DeserializeObject<Model>(json);

deserialzedObject.Bar.ForEach(x => Console.WriteLine(x));
//bar1
//bar2
//bar1 <-- why JsonConvert using "Add", not replace WHOLE List
//bar2

Console.WriteLine(deserialzedObject.SerializeBar);
//bar1,bar2,bar1,bar2

型号:

class Model
{
    public string SerializeBar
    {
        get { return string.Join(",", Bar); }
        set { Bar = value.Split(',').ToList(); }
    }
    public List<string> Bar { get; set; }
}

PS:不接受答案属性[JsonIgnore],或重新排序属性位置,因为真实情况是复杂的

1 个答案:

答案 0 :(得分:1)

您必须设置pub.d.v

JsonSerializerSettings