Json.net을 사용하여 파생 유형 역직렬화
기본 클래스 Base
와 파생 클래스 Derived
가 있다고 가정합니다. 여기서 Derived
는 Base
에서 상속됩니다. Base
및 Base
의 인스턴스가 포함된 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
에는 올바른 유형의 Base
및 Derived
개체가 포함됩니다. 그러나 유형 이름 처리를 활성화하면 단점이 있습니다. 직렬화된 JSON에 모든 객체와 목록의 이름이 포함되므로 어떤 경우에는 이상적이지 않을 수 있습니다.
위 내용은 Json.net을 사용하여 기본 및 파생 유형 목록을 역직렬화하고 실제 유형을 보존하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!