Home >Backend Development >C++ >How to Resolve the 'Self Referencing Loop Detected' Exception When Serializing a List of Objects with JSON.Net?
When Serializing a List of Objects, JSON.Net can encounter a "Self Referencing Loop Detected" exception. This error occurs when there are circular references within the serialized object graph.
Specific Problem
The provided code snippet:
public ActionResult getRouteFromPart(int partId) { List<Route> routes = _routeService.GetRouteByPartType(partId); ... return this.AdvancedJsonResult(new { Routes = routes }, JsonRequestBehavior.AllowGet); }
throws the exception while attempting to serialize the list of Route objects.
Solution
The exception indicates that there is a circular reference within the Route object graph. Specifically, the error message mentions a path of 'routes[0].incomingLots[0].partNumber.partType.partNumbers'. This suggests that there is a relationship between Route objects and PartNumber objects, and that the reference is causing a loop.
To resolve this issue, you can disable self-referencing loops during serialization by configuring the JSON.Net serializer settings as follows:
var settings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore };
This setting instructs JSON.Net to ignore circular references and continue the serialization process.
Full Exception Message
Self referencing loop detected with type 'System.Data.Entity.DynamicProxies.PartNumber_B135A5D16403B760C3591872ED4C98A25643FD10B51246A690C2F2D977973452'. Path 'routes[0].incomingLots[0].partNumber.partType.partNumbers'.
The above is the detailed content of How to Resolve the 'Self Referencing Loop Detected' Exception When Serializing a List of Objects with JSON.Net?. For more information, please follow other related articles on the PHP Chinese website!