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

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

描述得很详细 这里.

我有几个选择

  • 将 linq to sql 类转换为没有关系的类,从而避免循环引用
  • 通过清零关联来剪断循环引用 - 我不认为这是一个真正的选择
  • 使用 ScriptIgnoreAttribute (以某种方式)。我无法轻松应用此功能,因为属性位于生成的类中,并且 LINQ to SQL 不会自动支持好友类
  • 使用 JSON.NET 并以某种方式使用属性 + 好友类来阻止序列化器尝试遍历关系。

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

任何帮助是极大的赞赏

有帮助吗?

解决方案

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

其他提示

已接受答案的附加链接

Json.NET 帮助,保留对象引用(带有示例)

看起来它与 LINQ to SQL 配合得很好

詹姆斯的解决方案解决了我的部分问题。我需要排除对象内的某些列表类型。为了解决我的问题,我只是复制了我需要的对象的部分。下面是一个例子。

var DB = new DBDataContext();
            var lUsers = new List<User>();
            DB.Users.ToList().ForEach(x => lUsers.Add(new User()
                {
                    ID = x.ID,
                    FIRST_NAME = x.FIRST_NAME
                }) );
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top