在做MVC项目时,难免会遇到Json序列化循环引用的问题,大致错误如下
错误1:序列化类型为“。。。”的对象时检测到循环引用。
错误2:Self referencing loop detected for property '。。。' with type '。。。'. Path '[0].x[0]'.
以上错误是因为数据库表关系引起的,比如一对一或多对多,如图:
EF里面是这样的,如图:
解决方法:
步骤1:
-引用JSON.NET
步骤2:
-引用Newtonsoft.Json
步骤3:
-Json序列化
public JsonResult Contact() { var result = from score in context.Prarent select score; string json = JsonConvert.SerializeObject(result, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }); return Json(new { data = json }, JsonRequestBehavior.AllowGet); }
返回的Json结果为: