我有几个相互引用的BusinessObject类,我需要在JsonResponse中序列化一个并将其返回到我的视图中.我一直得到循环引用异常,我无法摆脱它.我已将[ScriptIgnore()]装饰器放在每个不是简单数据类型属性的属性上,我仍然得到异常.我无法弄清楚问题出在哪里,因为我阻止了序列化器几乎所有的东西,它仍然在炸毁我.
有没有办法看到它们当前状态的序列化对象是什么?
[HttpPost] public JsonResult GetAnalysisInfo(int id) { ProjectContext myDB = db; SearchAnalysis searchanalysis = SearchAnalysis.Find(myDB,id); //searchanalysis.Results = searchanalysis.SearchResultsPrototype(myDB); return this.Json(searchanalysis); }
更新
我也试过实现ISerializable无济于事.我的GetobjectData非常简单:
public void GetobjectData(SerializationInfo info,StreamingContext context) { info.AddValue("SearchAnalysisId",this.SearchAnalysisId); info.AddValue("Created",this.Created); }
解决方法
我正在做的是防止该错误是返回反映我的对象的属性的anonymouse类型,如下所示:
public JsonResult CompanyListJson() { var list = (from companies in appContext.Companies where companies.Active.Equals(true) select new { Name = companies.dbname,Id = companies.Id,Active = companies.Id.Equals(CurrentCompany.Id) }); return Json(list,JsonRequestBehavior.AllowGet); }
也许这不是最好的方法,但它允许我保持我的JSON瘦,只推送我需要的数据(当然,避免循环引用异常)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。