System.Text.Json에서 직렬화 계약 사용자 정의
새로운 System.Text.Json API는 직렬화 계약을 사용자 정의하는 기능을 제공합니다. Newtonsoft의 IContractResolver와 유사한 기능.
계약 사용자 정의 .NET 7
.NET 7에서는 IJsonTypeInfoResolver 인터페이스를 통해 계약 사용자 정의가 가능합니다. 이 인터페이스를 사용하면 개발자는 지정된 유형 및 JsonSerializerOptions 조합에 대해 구성된 JsonTypeInfo 인스턴스를 반환하는 사용자 정의 해석기를 생성할 수 있습니다.
사용자 정의 해석기 생성
사용자 정의 해석기를 생성하는 한 가지 방법은 다음과 같습니다. DefaultJsonTypeInfoResolver를 서브클래싱하고 GetTypeInfo(Type, JsonSerializerOptions) 메서드를 재정의합니다. 또는 Action
예: 선택적 필드 직렬화
System.Text에서 SelectiveSerializer 클래스의 기능을 복제합니다. Json의 경우 다음과 유사한 수정자 작업을 사용할 수 있습니다. 다음:
resolver.Modifiers.Add(typeInfo => { if (typeInfo.Kind == JsonTypeInfoKind.Object) { foreach (var property in typeInfo.Properties) { if (property.GetMemberName() is {} name && !membersToSerializeSet.Contains(name)) property.ShouldSerialize = static (obj, value) => false; } } });
이 수정자는 지정된 필드 이름과 일치하는 속성을 확인하고 ShouldSerialize 속성을 false로 설정하여 직렬화에서 제외합니다.
분석기 설정
사용자 정의 리졸버가 생성되면 다음을 통해 설정할 수 있습니다. JsonSerializerOptions.TypeInfoResolver 속성. 예:
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), // Other options as required };
추가 참고 사항
위 내용은 System.Text.Json에서 직렬화 계약을 어떻게 사용자 지정할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!