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

序列化“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()

这给了同样的问题。

这是一个错误还是我的实现?


侃侃无极
浏览 406回答 3
3回答

白衣非少年

似乎您的对象层次结构中存在循环引用,JSON序列化程序不支持该引用。你需要所有的栏目吗?您只能在视图中选择所需的属性:return Json(new {       PropertyINeed1 = data.PropertyINeed1,     PropertyINeed2 = data.PropertyINeed2});这将使您的JSON对象更轻松,更容易理解。如果您有许多属性,AutoMapper可用于在DTO对象和View对象之间自动映射。

元芳怎么了

我有同样的问题并解决了 using Newtonsoft.Json;var list = JsonConvert.SerializeObject(model,     Formatting.None,     new JsonSerializerSettings() {         ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore});return Content(list, "application/json");
打开App,查看更多内容
随时随地看视频慕课网APP