序列化类型对象时检测到循环引用
本文关键字:循环 引用 检测 类型 对象 序列化 | 更新日期: 2023-09-27 18:32:01
我在控制器中尝试了以下代码:
List<ProductListingModels> prom = new List<ProductListingModels>();
prom.Add(new ProductListingModels()
{
ID = item.ID,
Name = item.Name,
DepartmentID = item.DepartmentID.Value,
BrandID = item.BrandID.Value
});
jr.Data = prom;
jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return Json(new
{
ja = jr.Data,
}, JsonRequestBehavior.AllowGet);
这是我的产品列表模型:
public class ProductListingModels:ItemEntityDataContext
{
public int ID { get; set; }
public string Name { get; set; }
public int DepartmentID { get; set; }
public int BrandID { get; set; }
}
这是一个错误:
序列化类型对象时检测到循环引用。
但是,如果我从添加对象"prom"更改为添加字符串或整数之类的内容,它的效果很好。我不知道如何添加对象会发生什么问题。
任何人都可以告诉我解决方案。欢迎来到您的所有问题和答案,非常感谢。
我怀疑问题出在ItemEntityDataContext超类可能对其他对象持有的引用上。将数据复制到视图模型类以传递到视图中始终是一个好主意。但是,在您的情况下,只需使用 LINQ 将字段选择为新的匿名类型并使用 json 进行序列化。像这样:
jr.Data = prom.Select(p => new
{
ID = p.ID,
Name = p.Name,
DepartmentID = p.DepartmentID,
BrandID = p.BrandID
}).ToArray();