json.net 직렬화 및 사막화가있는 다형성 서브 객체가있는 데이터 유형
JSON.NET은 JSON과 C# 클래스 간의 직렬화 및 파생화를 허용하지만 다형성 물체를 처리 할 때 복잡해질 수 있습니다.
$ 유형 필드를 사용하십시오
기본 메소드는 를 사용하여 필드를 JSON에 추가하여 하위 관측의 유형을 표시하는 것입니다. 그러나 이것은 불필요한 필드를 소개합니다.
대안 하위 유형 처리 방법
필드를 피하기 위해, 대안적인 방법은 다형성 물체에 대한 기본 클래스를 생성하고 속성을 추가하여 하위 유형을 표시하는 것입니다. 그러나이를 위해서는 컨테이너 클래스가 직렬화 중에
속성에 액세스하기 위해 서브 -오브젝트 인스턴스를 포함해야합니다.
기본 클래스의 하위 유형 속성
보다 안정적인 방법은 기본 클래스에 속성으로 하위 유형 정보를 추가하는 것입니다. 이것은 사용자 정의 를 사용하여 수행됩니다. 컨버터는 속성을 채우고 직렬화 중에 직렬화합니다. TypeNameHandling.Auto
사용자 정의 서브 타입 변환기
사용자 정의 변환기는 $type
메소드를 사용하여 JSON의 "타입"속성을 확인하고 해당 작업에 따라 직렬화 된 객체를 확인합니다. 또한 처리 할 수있는 유형을 지정하기 위해 메소드를 정의합니다.
코드 구현
다음 프로토 타입 구현은이 방법을 설명합니다
이 대체 방법을 통해, 하위 유형 정보는 별도의 필드없이 JSON 자체에 내장되어 있으며 직렬화 된 중합체 물체를위한 유연한 솔루션을 제공합니다. $type
이 개정 된 출력은 "기본 접근법은 ..."와 같은 원래의 의미와 지역을 유지하는 것과 같은 불필요한 구절을 피합니다 > 사용자 정의 변환기의 활동 조건이있는 섹션
위 내용은 '$ 유형'필드가없는 JSON.NET에서 다형성 자식 객체를 직렬화하고 사제화하려면 어떻게해야합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!