인터페이스 인스턴스 컬렉션 역직렬화
JSON.NET을 사용하여 인터페이스 인스턴스 컬렉션을 직렬화 및 역직렬화하려고 할 때 다음 사항을 해결하는 것이 중요합니다. 역직렬화 중 유형 식별 문제. 이 시나리오에서 발생하는 오류 메시지는 인터페이스 또는 추상 클래스를 직접 인스턴스화할 수 없음을 나타냅니다.
사용자 정의 유형 바인더 접근 방식
제안되는 접근 방식 중 하나는 사용자 정의 유형 분석기 바인더. 여기에는 ITypeResolver 인터페이스를 구현하는 사용자 정의 클래스를 생성하고 역직렬화 중에 이를 JsonSerializer에 제공하는 작업이 포함됩니다. 사용자 정의 바인더는 인터페이스 유형을 기반으로 구체적인 유형을 해결하는 역할을 담당합니다.
JSON.NET 기본 설정
그러나 JSON.NET을 사용하면 가능합니다. 사용자 지정 바인더 없이 역직렬화를 달성합니다. JsonSerializerSettings 객체에서 TypeNameHandling 및 TypeNameAssemblyFormat 설정을 조정하면 JSON.NET이 직렬화 및 역직렬화 중에 유형 식별을 자동으로 처리할 수 있습니다.
직렬화
직렬화할 때 수행원 설정:
string serializedJson = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects, TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple });
역직렬화
역직렬화할 때 다음 설정을 사용하십시오.
var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects });
이러한 설정을 사용하면 JSON.NET이 자동으로 직렬화 중에 제공된 유형 정보를 기반으로 인터페이스 인스턴스의 구체적인 유형을 식별합니다. 이를 통해 다양한 인터페이스를 구현하는 객체가 포함된 컬렉션을 원활하게 역직렬화할 수 있습니다.
위 내용은 JSON.NET을 사용하여 인터페이스 인스턴스 컬렉션을 역직렬화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!