기본 동작을 유지하면서 System.Text.Json 직렬화 사용자 정의
질문:
데이터 모델 업그레이드를 위해 사용자 정의 System.Text.Json.JsonConverter를 구현할 때 다른 직렬화 옵션에 영향을 주지 않고 Write() 메서드에서 기본 직렬화 동작을 유지하려면 어떻게 해야 합니까?
정답:
사용자 정의 System.Text.Json.JsonConverter의 Write() 메서드에서 기본 직렬화 동작을 유지하려면 다음 전략을 사용할 수 있습니다.
옵션 1: 속성에 [JsonConverter] 사용
옵션 2: 변환기 컬렉션 수정
옵션 3: DefaultConverterFactory 구현
제한사항:
예:
<code class="language-csharp">public sealed class PersonConverter : DefaultConverterFactory<Person> { public override Person Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions modifiedOptions) { // 自定义读取实现 } } public abstract class DefaultConverterFactory<T> : JsonConverterFactory { public override bool CanConvert(Type typeToConvert) => typeof(T) == typeToConvert; public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options) { return new DefaultConverter(options, this); } } public sealed class DefaultConverter : JsonConverter<Person> { public override void Write(Utf8JsonWriter writer, Person value, JsonSerializerOptions modifiedOptions) { // 调用默认的 Write 实现 JsonSerializer.Serialize(writer, value, modifiedOptions); } }</code>
위 내용은 사용자 지정 JsonConverter를 구현할 때 기본 System.Text.Json 직렬화 동작을 어떻게 보존할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!