>백엔드 개발 >C++ >JSON.Net을 사용하여 개체 목록을 직렬화할 때 '자체 참조 루프 감지' 예외를 해결하는 방법은 무엇입니까?

JSON.Net을 사용하여 개체 목록을 직렬화할 때 '자체 참조 루프 감지' 예외를 해결하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-28 07:56:10698검색

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);
}

경로 목록을 직렬화하는 중 예외가 발생했습니다. 개체.

솔루션

예외는 경로 개체 그래프 내에 순환 참조가 있음을 나타냅니다. 특히 오류 메시지에는 '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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.