序列化物件列表時,JSON.Net 可能會遇到“檢測到自引用循環”異常。當序列化物件圖中存在循環引用時,會發生此錯誤。
特定問題
提供的程式碼片段:
public ActionResult getRouteFromPart(int partId) { List<Route> routes = _routeService.GetRouteByPartType(partId); ... return this.AdvancedJsonResult(new { Routes = routes }, JsonRequestBehavior.AllowGet); }
拋出嘗試序列化路由列表時出現異常
解決方案
異常表示Route物件圖中存在循環引用。具體來說,錯誤訊息提到路徑「routes[0].incomingLots[0].partNumber.partType.partNumbers」。這表明 Route 物件和 PartNumber 物件之間存在關係,並且引用導致了循環。
要解決此問題,您可以透過設定JSON.Net 序列化器在序列化期間停用自引用循環設定如下:
var settings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore };
此設定指示JSON.Net 忽略循環引用並繼續序列化處理。
完整異常訊息
Self referencing loop detected with type 'System.Data.Entity.DynamicProxies.PartNumber_B135A5D16403B760C3591872ED4C98A25643FD10B51246A690C2F2D977973452'. Path 'routes[0].incomingLots[0].partNumber.partType.partNumbers'.
以上是使用 JSON.Net 序列化物件清單時如何解決「偵測到自引用循環」異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!