首页 > 解决方案 > Newtonsoft Json 参考在错误的一边

问题描述

我在序列化列表时遇到了麻烦,列表中的每个对象也可以有一个列表(“链接”),它只能通过引用进行序列化。发生的情况是引用在错误的一侧,这意味着链接包含实际的对象信息,而父列表包含引用 id。

在下面找到完整的代码:

   [Serializable]
   public class Template
   {
        public string Name { get; set; }
        public List<Template> Links { get; set; }

        public Template()
        {
            Links = new List<Template>();
        }
   }



   List<Template> toserialize = new List<Template>();
   toserialize.Add(new JsonTest.Template() { Name = "A" });
   toserialize.Add(new JsonTest.Template() { Name = "B" });
   toserialize.Add(new JsonTest.Template() { Name = "C" });

   toserialize[0].Links.Add(toserialize[1]);
   toserialize[0].Links.Add(toserialize[2]);

   using (FileStream fs = new FileStream(@"C:\Outputtest.json", FileMode.Create))
   using (StreamWriter writer = new StreamWriter(fs))
   using (JsonTextWriter json = new JsonTextWriter(writer))
   {
        JsonSerializer ser = new JsonSerializer()
        {
             TypeNameHandling = TypeNameHandling.Objects,
             ReferenceLoopHandling = ReferenceLoopHandling.Error,
             PreserveReferencesHandling = PreserveReferencesHandling.All,
             NullValueHandling = NullValueHandling.Ignore,
        };
        ser.Serialize(json, toserialize);
        json.Flush();
  }

如何将参考 ID 移动到正确的位置?您可以在此处下载完整示例:https ://1drv.ms/u/s!AreXFr2kgVXYjacDrPu9rR_7DhE5bg

韩国

标签: c#jsonjson.net

解决方案


推荐阅读