> 백엔드 개발 > C++ > IJsonTypeInfoResolver를 사용하여 .NET 7에서 JSON 직렬화를 사용자 정의하는 방법은 무엇입니까?

IJsonTypeInfoResolver를 사용하여 .NET 7에서 JSON 직렬화를 사용자 정의하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-28 22:47:13
원래의
115명이 탐색했습니다.

How to Customize JSON Serialization in .NET 7 with IJsonTypeInfoResolver?

System.Text.Json에서 IContractResolver를 구현하는 방법

소개

System.Text.Json 네임스페이스는 .NET에서 고성능 JSON 직렬화 및 역직렬화를 제공하는 Newtonsoft.Json의 최신 대안입니다. 이전에 System.Text.Json에서 사용할 수 없었던 기능 중 하나는 Newtonsoft.Json의 IContractResolver 인터페이스와 유사한 계약 해결 프로세스를 사용자 지정하는 방법이었습니다. 그러나 이제 이 기능은 IJsonTypeInfoResolver 구현을 통해 .NET 7에서 사용할 수 있습니다.

답변

새로운 .NET 7 기능: IJsonTypeInfoResolver

.NET 7부터 System.Text.Json 네임스페이스에는 계약 사용자 정의를 가능하게 하는 IJsonTypeInfoResolver 인터페이스가 도입되었습니다. 개발자는 이 인터페이스를 사용하여 직렬화 및 역직렬화 중에 특정 유형에 대한 메타데이터를 수정하는 사용자 정의 계약 확인자를 생성할 수 있습니다.

DefaultJsonTypeInfoResolver

System.Text.Json 팀은 IJsonTypeInfoResolver 인터페이스를 구현하는 기본 계약 확인자 DefaultJsonTypeInfoResolver를 제공했습니다. 이 확인자는 Newtonsoft.Json의 DefaultContractResolver와 유사한 기능을 제공합니다. DefaultJsonTypeInfoResolver를 하위 클래스로 분류하거나 수정자를 추가하여 요구 사항에 따라 계약 메타데이터를 사용자 정의할 수 있습니다.

수정자와 함께 DefaultJsonTypeInfoResolver 사용

SelectiveSerializer 클래스를 작업에 맞게 조정하려면 System.Text.Json에서 SerializeSelectedFields 확장 메서드를 사용할 수 있습니다. DefaultJsonTypeInfoResolver:

var options = new JsonSerializerOptions
{
    TypeInfoResolver = new DefaultJsonTypeInfoResolver()
        .SerializeSelectedFields("FirstName,Email,Id"),
    // Add other options as required
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase, 
    WriteIndented = true,
};
로그인 후 복사

직렬화 중에 지정된 속성만 선택적으로 직렬화합니다.

추가 참고 사항

  • 속성의 조건부 직렬화의 경우 , JsonPropertyInfo.ShouldSerialize를 사용할 수 있습니다. 메서드.
  • JsonPropertyInfo.AttributeProvider는 리플렉션 또는 소스 생성 확인자에 의해 생성될 때 기본 PropertyInfo 또는 FieldInfo를 반환합니다.
  • 직렬화 메타데이터는 로케일 불변 문자열 논리를 사용하여 구성해야 합니다.

위 내용은 IJsonTypeInfoResolver를 사용하여 .NET 7에서 JSON 직렬화를 사용자 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿