首頁 >後端開發 >C++ >使用 JSON.Net 序列化物件清單時如何解決「偵測到自引用循環」異常?

使用 JSON.Net 序列化物件清單時如何解決「偵測到自引用循環」異常?

Barbara Streisand
Barbara Streisand原創
2024-12-28 07:56:10684瀏覽

How to Resolve the

JSON.Net 出現“檢測到自引用循環”異常

序列化物件列表時,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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn