当前位置: 首页 > 面试题库 >

将LINQ序列化为SQL类时的循环引用异常

洪开诚
2023-03-14
问题内容

我有一组linq到sql类,并使用.NET JavaScriptSerializer将它们序列化为JSON。

但是,一旦我将记录添加到相关表上,序列化就会引发“循环引用异常”。啊!

在这里详细描述。

我有几种选择

  • 将linq to sql类转换为没有关系的类,从而避免循环引用
  • 通过取消关联来剪断循环引用-我不认为这是一个真实的选择
  • 使用ScriptIgnoreAttribute(以某种方式)。我不容易应用此方法,因为属性在生成的类中,并且LINQ to SQL不会自动接受伙伴类
  • 使用JSON.NET并以某种方式使用属性+伙伴类来阻止序列化程序尝试遍历关系。

有人遇到过这种情况么?如果可能的话,我真的更愿意选择最后一个选项,但是我不知道该怎么做。

任何帮助是极大的赞赏


问题答案:

最新版本的Json.NET支持序列化循环关系。在帮助中查看“
保留对象引用 ”。



 类似资料:
  • 我有一个数据结构藏书集,里面有一套书。每本书都有它所在藏书的参考文献。这是一种标准的一对多关系。它在服务器端工作得很好,但是我必须把它发送到客户端。该应用程序使用Jackson ObjectMapper进行序列化,设置为Spring Bean。问题是,您不能简单地序列化一个图书集合和书籍,因为标准JSON中没有引用(我确实需要标准JSON)。 当前的解决方案是把@JsonIgnore放在Book.

  • 问题内容: 上课: 和控制器代码: 它适用于LOCALHOST,但不适用于实时服务器: 错误: Json序列化类型的对象时检测到循环引用 我进行了搜索并找到了属性,因此将模型更改为 但是在实时服务器(win2008)上也会发生相同的错误。 如何避免该错误并成功序列化父数据? 问题答案: 尝试以下代码: …或者如果您仅需要父属性: 它并不是解决问题的真正方法,但在序列化DTO时是一种常见的解决方法。

  • 问题内容: 我正在尝试做一个简单的JSON返回,但是我遇到以下问题。 我得到一个HTTP 500,但此问题的标题中显示了例外。我也试过 那也带来了同样的问题。 这是错误还是我的实现? 问题答案: 看来您的对象层次结构中有循环引用,而JSON序列化程序不支持。您是否需要所有列?您只能在视图中选择所需的属性: 这将使您的JSON对象更轻便,更易于理解。如果您有许多属性,则可以使用AutoMapper

  • 问题内容: 我正在使用Newtonsoft JSON序列化程序,它适用于大多数对象。 不幸的是,当我尝试序列化一个大对象时,我得到了一个,其中一个成员抛出。 无论如何,有没有要忽略有问题的成员并序列化对象的其余部分? 我在想吗? 这是我想要做的简化版本: 这是堆栈跟踪: 如果有人知道可以执行此操作,我很乐意使用其他JSON序列化程序。 问题答案: 如果您不控制源代码,则可以在序列化过程中使用自定义

  • 问题内容: 例如:对象A包含对象B,对象B包含对象C,对象C包含对象A。 对象A是否可以正确序列化? 这里的#9注释表明它不起作用。 相反,XStream指示它确实处理循环引用。 问题答案: 是的,默认的Java序列化可用于循环引用。序列化对象C时,该字段将包含对已序列化的对象A的反向引用,而不是再次对其进行序列化。

  • 问题内容: 所以这是我的交易 楷模 ....以下模型(这些模型已连接到EfDbContext)已连接到以下存储库… 接口/存储库 在我的HomeController()中,我得到了一个JsonResult方法,我想返回上下文。这是方法 杰森请求 我收到以下错误: 序列化类型为’System.Data.Entity.DynamicProxies.News_96C0B16EC4AC46070505EE