为了账号安全,请及时绑定邮箱和手机立即绑定

序列化“SubSonic.Schema .DatabaseColumn”类型的对象时检测到循环引用。

序列化“SubSonic.Schema .DatabaseColumn”类型的对象时检测到循环引用。

侃侃无极 2019-07-30 11:33:15
序列化“SubSonic.Schema .DatabaseColumn”类型的对象时检测到循环引用。我正在尝试做一个简单的JSON返回,但我遇到了问题,我有以下内容。public JsonResult GetEventData(){     var data = Event.Find(x => x.ID != 0);     return Json(data);}我得到了一个HTTP 500,例外情况如此问题的标题所示。我也试过了var data = Event.All().ToList()这给了同样的问题。这是一个错误还是我的实现?
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

似乎您的对象层次结构中存在循环引用,JSON序列化程序不支持该引用。你需要所有的栏目吗?您只能在视图中选择所需的属性:

return Json(new {  
    PropertyINeed1 = data.PropertyINeed1,
    PropertyINeed2 = data.PropertyINeed2});

这将使您的JSON对象更轻松,更容易理解。如果您有许多属性,AutoMapper可用于在DTO对象和View对象之间自动映射。


查看完整回答
反对 回复 2019-07-30
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

我有同样的问题并解决了 using Newtonsoft.Json;

var list = JsonConvert.SerializeObject(model,
    Formatting.None,
    new JsonSerializerSettings() {
        ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore});return Content(list, "application/json");


查看完整回答
反对 回复 2019-07-30
  • 3 回答
  • 0 关注
  • 403 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信