Sérialisation des champs de classe dans System.Text.Json
System.Text.Json dans .NET Core 3 introduit la prise en charge de la sérialisation et de la désérialisation des objets. Cependant, un problème survient souvent lorsque l'on tente de sérialiser des champs de classe à l'aide de cette bibliothèque.
Considérons l'exemple suivant :
<code>public class Car { public int Year { get; set; } // 正确序列化 public string Model; // 未序列化 }</code>
Lorsque vous essayez de sérialiser une instance Car, la chaîne JSON générée ne contient pas de champs tels que Modèle. En effet, System.Text.Json dans .NET Core 3 ne prend pas en charge les champs sérialisés.
Solution
Dans .NET 5 et versions ultérieures, System.Text.Json a la possibilité de sérialiser les champs. Ceci peut être réalisé en activant la prise en charge sur le terrain ou en marquant manuellement les champs pour la sérialisation.
Activer la sérialisation des champs
Lors de la sérialisation, vous pouvez activer la sérialisation des champs en définissant la propriété JsonSerializerOptions.IncludeFields sur true :
<code>Car car = new Car { Model = "Fit", Year = 2008 }; // 启用字段序列化 var options = new JsonSerializerOptions { IncludeFields = true }; // 传递 "options" 进行序列化 var json = JsonSerializer.Serialize(car, options);</code>
Marquer les champs à sérialiser
Vous pouvez également utiliser l'attribut [JsonInclude] pour marquer des champs individuels à sérialiser :
<code>[JsonInclude] public string Model;</code>
Exemples de deux méthodes
<code>public class Car { public int Year { get; set; } // 正确序列化 [JsonInclude] public string Model; } // 或 Car car = new Car { Model = "Fit", Year = 2008 }; var options = new JsonSerializerOptions { IncludeFields = true }; var json = JsonSerializer.Serialize(car, options);</code>
En implémentant ces techniques, vous pouvez vous assurer que les objets sérialisés et désérialisés ont exactement les mêmes valeurs, y compris les valeurs dans les champs 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!