我正在使用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; }
}
答案 0 :(得分:3)
通常的方法是将[ScriptIgnore]与父节点引用一起使用,如:
public class Node {
[ScriptIgnore]
public Node Parent { get; set; }
public ICollection<Node> Children { get; set; }
}
答案 1 :(得分:1)
Json.NET正是我想要的。但另一个选择是创建一个匿名类型并序列化它。