使用Json.Net序列化实体框架对象

Hit*_*esh 8 javascript asp.net-mvc entity-framework json.net

如何将实体框架对象序列化为JavaScript Object(JSON)?我尝试使用JSON.NET但是当我尝试序列化它时,我得到以下异常.

例外:Newtonsoft.Json.JsonSerializationException,Message ="Self referencing loop"

亚太区首席技术官Matt

jri*_*sta 7

听起来,就循环引用而言,您遇到与原始DataContract序列化程序相同的一般问题.虽然相互引用的对象与内存中的对象图相当常见,但如果序列化程序没有特别考虑它,则这种循环引用在序列化时不可避免地会导致无限递归.在常见的非二进制序列化格式中处理循环引用的建立标准很少(如果有的话)(XML和JSON是最常见的两种).

Microsoft通过在xml中使用ref语义解决了.NET 3.5 SP1中DataContract序列化程序的循环问题.据我所知,JSON没有这样的东西,这可能就是JSON.NET阻止你序列化对象图形的原因.

我会确保你的对象图中只有可以单向导航的引用,而不是两种方式(即只从父对子,而不是从子到父.)那些父/子和子/父是最常见的循环引用的类型.也可能是较低级别的子级最终引用了图形的根,导致创建间接循环图(但这些图形往往远不如父/子循环那么常见).

消除对象图中的任何循环引用后,您应该能够序列化.

  • 一般来说,实际上保持域实体和DTO彼此独立是一种很好的做法.处于原生,丰富,图形状态的实体是模拟业务问题域和解决业务问题的好方法,但它们不适合面向服务和序列化.我个人的偏好是保持我的域名尽可能丰富和相互关联,以便为业务建模,并提供独立的服务API,提供单独的可序列化DTO. (4认同)