System.Text.Json이 IContractResolver와 같은 선택적 직렬화를 구현할 수 있습니까?
새로운 System.Text.Json 네임스페이스에는 Newtonsoft의 네임스페이스와 완전히 동일한 것이 부족합니다. IContractResolver. 그러나 .NET 7에는 유사한 기능을 제공하는 계약 사용자 정의가 도입되었습니다.
.NET 7의 계약 사용자 정의
계약 사용자 정의를 통해 사용자는 IJsonTypeInfoResolver를 사용하여 JSON 직렬화 메타데이터를 사용자 정의할 수 있습니다. 인터페이스. 이 인터페이스를 구현함으로써 개발자는 자체 계약 확인자를 생성하여 직렬화할 속성을 지정할 수 있습니다.
사용자 지정 계약 확인자 생성
선택적으로 사용자 지정 계약 확인자를 생성하려면 필드를 직렬화하려면 다음 단계를 수행할 수 있습니다.
유창한 확장 방법 정의 DefaultJsonTypeInfoResolver를 수정하려면:
public static DefaultJsonTypeInfoResolver SerializeSelectedFields(this DefaultJsonTypeInfoResolver resolver, IEnumerable<string> membersToSerialize);
JsonSerializerOptions에서 TypeInfoResolver를 설정합니다.
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), ... };
예
더 다음 코드는 계약 사용자 정의를 사용하여 "FirstName", "Email" 및 "Id" 속성을 선택적으로 직렬화하는 방법을 보여줍니다.
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), ... }; // Serialize the object var json = JsonSerializer.Serialize(obj, options);
추가 참고 사항
위 내용은 System.Text.Json은 Newtonsoft의 IContractResolver처럼 선택적 직렬화를 달성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!