我眼中的json先生
json:一种轻量级的数据交换语言。为什么需要这种数据交换语言呢?因为我们后端用的是c#等语言,而js是JavaScript语言,JavaScript中一切皆对象,于是controller与js互通就需要中间人“json”。
json的序列化和发序列化大受欢迎
序列化:从字符串转对象。
反序列化:从对象转字符串。
序列化类型system.data.entity.dynamicProxies的对象时检测到循环引用
我们时常根据我们的需要去序列化和反序列化,但是这次controller返回json数据(字符串转对象)出错,出错原因为“序列化类型system.data.entity.dynamicProxies的对象时检测到循环引用”。
经过反复的查阅,发现问题出在序列化时,由于D层一个表和另一个表示一对多关系,当序列化表1的时候,会找到和另一个表2关联的字段,就会到另一个表2中序列化,然后另一个表2也有一个字段和表1相关联,所以序列化发生错误。
解决方法
在方法中加入
db.Configuration.ProxyCreationEnabled = false;
主要是用于创建代理(以及禁用延迟加载)禁用代理扰乱序列yiyang