如何将 Entity Framework 对象序列化为 JavaScript 对象 (JSON)?我尝试使用 JSON.NET但是当我尝试序列化它时出现以下异常。
异常:Newtonsoft.Json.JsonSerializationException, Message="自引用循环"
希特什
最佳答案
在循环引用方面,听起来您遇到了与原始 DataContract 序列化程序相同的一般问题。虽然对象相互引用在内存中的对象图中相当常见,但如果序列化程序没有专门考虑这种循环引用,则在序列化时不可避免地会导致无限递归。在常见的非二进制序列化格式(XML 和 JSON 是最流行的两种格式)中处理循环引用的既定标准很少(如果有的话)。
Microsoft 通过使用 xml 中的 ref 语义解决了 .NET 3.5 SP1 中 DataContract 序列化程序的循环问题。据我所知,JSON 没有这样的东西,这可能就是 JSON.NET 阻止您序列化对象图的原因。
我会确保您的对象图中只有可单向导航的引用,而不是双向导航(即仅从父到子,而不是从子到父。)那些父/子和子/父是最常见的循环引用类型。也可能是较低级别的 child 最终引用了图的根,导致创建了一个间接循环图(然而,这些往往远不如父/子循环常见。)
一旦消除了对象图中的任何循环引用,就应该能够进行序列化。
关于javascript - 使用 Json.Net 序列化 Entity Framework 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1036377/