>백엔드 개발 >C++ >Json.net은 파생 유형 직렬화 및 역직렬화를 어떻게 처리할 수 있나요?

Json.net은 파생 유형 직렬화 및 역직렬화를 어떻게 처리할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2025-01-21 18:28:10946검색

How Can Json.net Handle Serializing and Deserializing Derived Types?

Json.NET(Newtonsoft)에서 파생 유형의 직렬화 및 역직렬화

Json.NET은 복잡한 데이터 구조를 직렬화 및 역직렬화하는 유연성을 제공합니다. 파생 형식을 처리할 때 올바르게 역직렬화되도록 직렬화 중에 형식 정보를 보존하는 것이 중요합니다.

Json.NET은 JsonSerializerSettings 객체의 TypeNameHandling 속성을 ​​통해 이 기능을 구현합니다. 이 속성을 All으로 설정하면 Json.NET은 직렬화된 출력에 형식 이름을 포함합니다.

예를 들어 다음 기본 클래스와 파생 클래스를 고려해 보세요.

<code class="language-csharp">public class Base
{
    public string Name;
}

public class Derived : Base
{
    public string Something;
}</code>

파생 유형을 직렬화 및 역직렬화하려면:

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

JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
string serialized = JsonConvert.SerializeObject(inheritanceList, settings);

// 反序列化
var deserializedList = JsonConvert.DeserializeObject<List<Base>>(serialized, settings);</code>

이 접근 방식을 통해 Json.NET은 유형 정보를 보존하여 파생 유형을 성공적으로 역직렬화할 수 있습니다. 그러나 직렬화된 출력에는 객체와 관련된 유형 및 객체를 보유하는 데 사용되는 목록이 포함된다는 점에 유의하는 것이 중요합니다.

위 내용은 Json.net은 파생 유형 직렬화 및 역직렬화를 어떻게 처리할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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