[英]Newtonsoft.Json Deserialize Collection using “Add”
對不起我的英語不好
當對象具有更改屬性的“副作用”時,結果與反序列化之前的結果不同,
我知道不應該序列化對象具有“副作用”,但是我現在需要走動
傑森:
{
"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],或對屬性位置進行重新排序,因為實際情況復雜
您必須設置JsonSerializerSettings
JsonConvert.DeserializeObject<Model>(json, new JsonSerializerSettings()
{
ObjectCreationHandling = ObjectCreationHandling.Replace
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.