抱歉我的英文
当对象有一些“副作用”来改变属性时, 结果与反序列化之前的结果不同,
我知道序列化对象不应该有“副作用”, 但是我需要在这个时刻四处走动
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],或重新排序属性位置,因为真实情况是复杂的
答案 0 :(得分:1)
您必须设置pub.d.v
JsonSerializerSettings