簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM