Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menyelesaikan Pengecualian 'Gelung Rujukan Kendiri Dikesan' Apabila Mensiri Senarai Objek dengan JSON.Net?

Bagaimana untuk Menyelesaikan Pengecualian 'Gelung Rujukan Kendiri Dikesan' Apabila Mensiri Senarai Objek dengan JSON.Net?

Barbara Streisand
Barbara Streisandasal
2024-12-28 07:56:10684semak imbas

How to Resolve the

Pengecualian "Gelung Rujukan Diri Dikesan" dengan JSON.Net

Apabila Mensiri Senarai Objek, JSON.Net boleh menghadapi pengecualian "Gelung Rujukan Kendiri Dikesan". Ralat ini berlaku apabila terdapat rujukan bulat dalam graf objek bersiri.

Masalah Khusus

Coretan kod yang disediakan:

public ActionResult getRouteFromPart(int partId)
{
    List<Route> routes = _routeService.GetRouteByPartType(partId);
    ...
    return this.AdvancedJsonResult(new
    {
        Routes = routes
    }, JsonRequestBehavior.AllowGet);
}

melemparkan pengecualian semasa cuba menyusun senarai Laluan objek.

Penyelesaian

Pengecualian menunjukkan bahawa terdapat rujukan bulat dalam graf objek Laluan. Secara khusus, mesej ralat menyebut laluan 'routes[0].incomingLots[0].partNumber.partType.partNumbers'. Ini menunjukkan bahawa terdapat hubungan antara objek Laluan dan objek PartNumber, dan rujukan itu menyebabkan gelung.

Untuk menyelesaikan isu ini, anda boleh melumpuhkan gelung rujukan sendiri semasa bersiri dengan mengkonfigurasi penyeri JSON.Net tetapan seperti berikut:

var settings = new JsonSerializerSettings
{
    ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};

Tetapan ini mengarahkan JSON.Net untuk mengabaikan rujukan bulat dan meneruskan siri proses.

Mesej Pengecualian Penuh

Self referencing loop detected with type 'System.Data.Entity.DynamicProxies.PartNumber_B135A5D16403B760C3591872ED4C98A25643FD10B51246A690C2F2D977973452'. Path 'routes[0].incomingLots[0].partNumber.partType.partNumbers'.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Pengecualian 'Gelung Rujukan Kendiri Dikesan' Apabila Mensiri Senarai Objek dengan JSON.Net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn