c# - 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
韩国
解决方案
推荐阅读
- javascript - 如何将闪亮的面板输出放置在鼠标附近但在 DT 表上?
- javascript - 制表器中的日期时间选择器?
- unity3d - 小行星统一复制的运动奇怪问题
- reactjs - React:将名称-值对呈现为 React.FC
- wordpress - 有没有办法在 wocommerce 的我的帐户页面的端点内添加带有自定义字段的表单?
- java - 具有多个文件的记录器 cdi
- javascript - 弹出窗口 JavaScript
- service-worker - ReferenceError:文档未定义。服务人员。工作箱
- awk - 在 awk 中使用填充将数字转换为字符串
- r - qmethod r 包数据帧断开连接