我有两个一对多相关的实体
public class Restaurant {
public int RestaurantId {get;set;}
public string Name {get;set;}
public List<Reservation> Reservations {get;set;}
...
}
public class Reservation{
public int ReservationId {get;set;}
public int RestaurantId {get;set;}
public Restaurant Restaurant {get;set;}
}
如果我尝试使用api获取预订餐厅
var restaurants = await _dbContext.Restaurants
.AsNoTracking()
.AsQueryable()
.Include(m => m.Reservations).ToListAsync();
.....
我收到错误响应,因为对象包含相互引用。有相关帖子建议创建单独的模型或添加NewtonsoftJson配置
问题是我不想创建单独的模型,第二个建议没有帮助。有没有办法在没有循环关系的情况下加载数据?*
System.Text.Json。JsonException:检测到不支持的可能对象循环。这可能是由于循环或对象深度大于System.Text.Json.ThrowHelper中允许的最大深度32。在System.Text.Json.JsonSerializer中,ThrowInvalidOperationException_SerializerCycledtected(Int32 maxDepth)。Write(Utf8JsonWriter writer、Int32 originalWriterDepth、Int32 flushThreshold、JSonSerializations选项、WriteStack
*
仍然面临这个问题的人:检查您是否< code > await -了所有的异步方法。
.NET Core 3.1安装软件包Microsoft.AspNetCore.Mvc。NewtonsoftJson(来自https://www.nuget.org/packages/Microsoft.AspNetCore.Mvc.NewtonsoftJson/ )
Startup.cs添加服务
services.AddControllers().AddNewtonsoftJson(options =>
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
);
我已经在一个新项目中尝试了你的代码,第二种方法似乎在安装Microsoft.AspNetCore.Mvc.NewtonsoftJson软件包后效果很好,首先是3.0。
services.AddControllersWithViews()
.AddNewtonsoftJson(options =>
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
);
尝试一个新项目并比较差异。
问题内容: 我想用JAXB将我的pojo转换为json,我的pojo具有一对多的关系,当我将pojo转换为json时,JAXB会产生错误“在对象图中检测到一个循环。这将导致无限深的XML”。 我从网上读到,可以通过@XmlID和@XmlIDREF的帮助解决此问题,但是有一个问题,我的Id属性不是String类型,而是Long。据我所知,@ XmlID只能与String属性一起使用。 其他网站建议使
问题内容: 运行以下代码时,出现此错误“主循环’builtin_function_or_method’对象不可迭代”: 我有搜索stackoverflow,但是找不到我的问题的答案… 我检查了错别字,但找不到任何错误。请帮我! 问题答案: 直接回答 在这里的代码中: 更改为。 如果您想进一步了解此错误,请阅读以下内容: 调试时,最好删除try … except块,尤其是“ expect Excep
问题内容: 上课: 和控制器代码: 它适用于LOCALHOST,但不适用于实时服务器: 错误: Json序列化类型的对象时检测到循环引用 我进行了搜索并找到了属性,因此将模型更改为 但是在实时服务器(win2008)上也会发生相同的错误。 如何避免该错误并成功序列化父数据? 问题答案: 尝试以下代码: …或者如果您仅需要父属性: 它并不是解决问题的真正方法,但在序列化DTO时是一种常见的解决方法。
问题内容: 我正在尝试做一个简单的JSON返回,但是我遇到以下问题。 我得到一个HTTP 500,但此问题的标题中显示了例外。我也试过 那也带来了同样的问题。 这是错误还是我的实现? 问题答案: 看来您的对象层次结构中有循环引用,而JSON序列化程序不支持。您是否需要所有列?您只能在视图中选择所需的属性: 这将使您的JSON对象更轻便,更易于理解。如果您有许多属性,则可以使用AutoMapper
我有一个简单的类,如下所示: 但我收到以下错误消息: 检测到服务“App\Algorithm\Calculator”的循环引用,路径:“App\Algorithm\Calculator”- MatchService.php 问题是,但我到底做错了什么?