我正在使用 System.Web.Extentions DLL 中包含的 System.Web.Script.Serialization.JavaScriptSerializer。我有几个循环引用,例如基本的多对多关系和父子关系。我该如何处理这些?我们的一个想法是用外键替换实际的对象引用。例如,而不是这个:
public class Node {
public Node Parent { get; set; }
public ICollection<Node> Children { get; set; }
}
我们会这样做:
public class Node {
public long ParentID { get; set; }
public ICollection<long> ChildrenIDs { get; set; }
}
我考虑过使用 ScriptIgnore 属性,但您如何将它用于多对多关系?意见和建议将不胜感激。谢谢!
编辑:这里有一些多对多关系的示例类。
public class Student {
public long StudentID { get; private set; }
public ICollection<Class> Classes { get; set; }
}
public class Class {
public long ClassID { get; private set; }
public ICollection<Student> Students { get; set; }
}
最佳答案
通常的方法是将 [ScriptIgnore] 与父节点引用一起使用,例如:
public class Node {
[ScriptIgnore]
public Node Parent { get; set; }
public ICollection<Node> Children { get; set; }
}
关于c# - 我应该如何处理 C# 到 JSON 序列化和循环引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6387346/