Beim Serialisieren einer Liste von Objekten kann JSON.Net auf die Ausnahme „Selbstreferenzierende Schleife erkannt“ stoßen. Dieser Fehler tritt auf, wenn im serialisierten Objektdiagramm Zirkelverweise vorhanden sind.
Spezifisches Problem
Der bereitgestellte Codeausschnitt:
public ActionResult getRouteFromPart(int partId) { List<Route> routes = _routeService.GetRouteByPartType(partId); ... return this.AdvancedJsonResult(new { Routes = routes }, JsonRequestBehavior.AllowGet); }
wirft das aus Ausnahme beim Versuch, die Liste der Route zu serialisieren Objekte.
Lösung
Die Ausnahme weist darauf hin, dass im Routenobjektdiagramm ein Zirkelbezug vorhanden ist. Konkret erwähnt die Fehlermeldung einen Pfad von „routes[0].incomingLots[0].partNumber.partType.partNumbers“. Dies deutet darauf hin, dass eine Beziehung zwischen Route-Objekten und PartNumber-Objekten besteht und dass die Referenz eine Schleife verursacht.
Um dieses Problem zu beheben, können Sie selbstreferenzierende Schleifen während der Serialisierung deaktivieren, indem Sie den JSON.Net-Serializer konfigurieren Einstellungen wie folgt:
var settings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore };
Diese Einstellung weist JSON.Net an, Zirkelverweise zu ignorieren und die Serialisierung fortzusetzen Prozess.
Vollständige Ausnahmemeldung
Self referencing loop detected with type 'System.Data.Entity.DynamicProxies.PartNumber_B135A5D16403B760C3591872ED4C98A25643FD10B51246A690C2F2D977973452'. Path 'routes[0].incomingLots[0].partNumber.partType.partNumbers'.
Das obige ist der detaillierte Inhalt vonWie löse ich die Ausnahme „Selbstreferenzierende Schleife erkannt' beim Serialisieren einer Liste von Objekten mit JSON.Net?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!