> 백엔드 개발 > C++ > Json.net을 사용하여 기본 및 파생 유형 목록을 역직렬화하고 실제 유형을 보존하려면 어떻게 해야 합니까?

Json.net을 사용하여 기본 및 파생 유형 목록을 역직렬화하고 실제 유형을 보존하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2025-01-21 18:35:09
원래의
862명이 탐색했습니다.

How Can I Deserialize a List of Base and Derived Types Using Json.net and Preserve Their Actual Types?

Json.net을 사용하여 파생 유형 역직렬화

기본 클래스 Base와 파생 클래스 Derived가 있다고 가정합니다. 여기서 DerivedBase에서 상속됩니다. BaseBase의 인스턴스가 포함된 Derived 개체 목록이 있습니다. 이 목록의 JSON 표현을 역직렬화할 때 파생 형식을 Base 개체가 아닌 실제 형식으로 검색하려고 합니다.

이를 달성하기 위해 Json.net은 유형 이름 처리라는 기능을 제공합니다. 이 기능을 활성화하고 직렬화 및 역직렬화 작업에 설정 매개변수로 전달하면 직렬화된 JSON에 포함되어야 하는 개체 유형을 지정할 수 있습니다.

<code class="language-csharp">Base object1 = new Base() { Name = "Object1" };
Derived object2 = new Derived() { Something = "Some other thing" };
List<Base> inheritanceList = new List<Base>() { object1, object2 };

JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
string Serialized = JsonConvert.SerializeObject(inheritanceList, settings);
List<Base> deserializedList = JsonConvert.DeserializeObject<List<Base>>(Serialized, settings);</code>
로그인 후 복사

이 역직렬화되면 deserializedList에는 올바른 유형의 BaseDerived 개체가 포함됩니다. 그러나 유형 이름 처리를 활성화하면 단점이 있습니다. 직렬화된 JSON에 모든 객체와 목록의 이름이 포함되므로 어떤 경우에는 이상적이지 않을 수 있습니다.

위 내용은 Json.net을 사용하여 기본 및 파생 유형 목록을 역직렬화하고 실제 유형을 보존하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿