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

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

Barbara Streisand
發布: 2024-12-28 07:56:10
原創
676 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板