Après la mise à niveau vers .NET Core 3, les développeurs peuvent rencontrer des problèmes liés aux champs de classe et à la sérialisation. System.Text.Json.JsonSerializer nécessite des propriétés pour la sérialisation et la désérialisation, mais les champs sont souvent plus pratiques pour représenter les données de classe. Cela soulève la question : comment garantir que les champs sont gérés correctement lors de la sérialisation et de la désérialisation.
Dans .NET Core 3.1, System.Text.Json ne sérialise pas les champs par défaut. Comme indiqué dans la documentation, « Les champs ne sont pas pris en charge dans System.Text.Json dans .NET Core 3.1 ».
Cependant, dans les versions ultérieures de .NET, certaines solutions sont disponibles. Dans .NET 5 et supérieur :
Pour démontrer cela, considérons une classe Car contenant le champ Modèle et la propriété Année :
<code>public class Car { public int Year { get; set; } public string Model; }</code>
Dans .NET Core 3.1, si IncludeFields n'est pas défini sur true, le résultat de la sérialisation de Car ressemble à ceci :
<code>{"Year":2008}</code>
Le champ Modèle est ignoré.
Dans .NET 5 et versions ultérieures, les options suivantes sont disponibles pour sérialiser les propriétés Année et les champs Modèle :
<code>var options = new JsonSerializerOptions { IncludeFields = true }; string json = JsonSerializer.Serialize(car, options);</code>
<code>[JsonInclude] public string Model; string json = JsonSerializer.Serialize(car);</code>
En utilisant ces techniques, les développeurs peuvent garantir que leurs champs de classe sont traités correctement lors de la sérialisation et de la désérialisation, conformément aux attributs de classe.
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!