Json.net을 사용하여 파생 유형 직렬화 및 역직렬화
Json.net(Newtonsoft)은 C#에서 다형성 상속을 사용할 때 파생 유형을 적절하게 직렬화 및 역직렬화하기 위해 특별한 처리가 필요합니다. 이 문서에서는 유형 이름 처리를 활성화하여 이를 수행하는 방법을 살펴봅니다.
질문
다음 클래스 계층 구조를 고려하세요.
<code class="language-csharp">public class Base { public string Name; } public class Derived : Base { public string Something; }</code>
이제 기본 개체 목록이 포함된 JSON 문자열을 역직렬화하려고 시도하지만 실제로 파생 개체가 포함되어 있는 경우 파생 유형 정보를 복구할 수 없습니다. 이 문제를 해결하는 방법?
답변
Json.net은 유형 이름의 직렬화 및 역직렬화를 활성화하는 TypeNameHandling 옵션을 제공합니다. 이 기능을 사용하려면:
예는 다음과 같습니다.
<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>
이 접근 방식을 사용하면 Json.net이 직렬화 중에 유형 정보를 보존하고 역직렬화 중에 이를 복원하여 파생 유형을 올바르게 복원할 수 있습니다.
위 내용은 Json.net을 사용하여 C#에서 파생 유형을 직렬화 및 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!