객체 목록을 직렬화할 때 JSON.Net에서 "자체 참조 루프 감지" 예외가 발생할 수 있습니다. 이 오류는 직렬화된 객체 그래프 내에 순환 참조가 있는 경우 발생합니다.
특정 문제
제공된 코드 조각:
public ActionResult getRouteFromPart(int partId) { List<Route> routes = _routeService.GetRouteByPartType(partId); ... return this.AdvancedJsonResult(new { Routes = routes }, JsonRequestBehavior.AllowGet); }
경로 목록을 직렬화하는 중 예외가 발생했습니다. 개체.
솔루션
예외는 경로 개체 그래프 내에 순환 참조가 있음을 나타냅니다. 특히 오류 메시지에는 '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 중국어 웹사이트의 기타 관련 기사를 참조하세요!