
Sesuaikan siri System.Text.Json sambil mengekalkan tingkah laku lalai
Soalan:
Apabila melaksanakan System.Text.Json.JsonConverter tersuai untuk naik taraf model data, bagaimanakah saya boleh mengekalkan tingkah laku bersiri lalai dalam kaedah Write() tanpa menjejaskan pilihan bersiri lain?
Jawapan:
Untuk mengekalkan kelakuan bersiri lalai dalam kaedah Write() bagi System.Text.Json.JsonConverter tersuai, anda boleh menggunakan strategi berikut:
Pilihan 1: Gunakan [JsonConverter] pada atribut
Pilihan 2: Ubah suai koleksi penukar
Pilihan 3: Laksanakan DefaultConverterFactory
Had:
Contoh:
<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>Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Gelagat Pensirilan System.Text.Json Lalai Apabila Melaksanakan JsonConverter Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!