序列化成Json时,多个对象互相引用导致死循环 Text.Json.JsonException: A possible object cycle was detected.
错误: 当两个类中的属性互相引用时,导致对象实例序列化成Json时死循环,错误如下:
1 | System.Text.Json.JsonException: A possible object cycle was detected. <br>This can either be due to a cycle or if the object depth is larger than the maximum allowed depth of 32. <br>Consider using ReferenceHandler.Preserve on JsonSerializerOptions to support cycles. <br>Path: $.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Delivery.Order.Id. |
解决方法:
在 Program.cs中添加 AddJsonOptions 选项配置,此配置Json不但不会死循环而且还能完整表达实例之间的互相引用关系。
1 2 | builder.Services.AddControllers() .AddJsonOptions(option => option.JsonSerializerOptions.ReferenceHandler = System.Text.Json.Serialization.ReferenceHandler.Preserve); |
增加AddJsonOptions 后的结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | { "$id" : "1" , "id" : 1, "companyName" : "蜗牛快递" , "number" : "SN356565565" , "order" : { "$id" : "2" , "id" : 1, "name" : "USB 充电器" , "address" : "湖南省长沙市岳阳临湘大市场" , "delivery" : { "$ref" : "1" } }, "orderId" : 1 } |
分类:
ASP.NET Core
标签:
WebApi错误
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!