Personnaliser la sérialisation System.Text.Json tout en conservant le comportement par défaut
Question :
Lors de l'implémentation d'un System.Text.Json.JsonConverter personnalisé pour les mises à niveau du modèle de données, comment puis-je conserver le comportement de sérialisation par défaut dans la méthode Write() sans affecter les autres options de sérialisation ?
Réponse :
Pour conserver le comportement de sérialisation par défaut dans la méthode Write() d'un System.Text.Json.JsonConverter personnalisé, vous pouvez utiliser la stratégie suivante :
Option 1 : Utiliser [JsonConverter] sur l'attribut
Option 2 : Modifier la collection de convertisseurs
Option 3 : implémenter DefaultConverterFactory
Limitations :
Exemple :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!