Maison >développement back-end >C++ >Comment sérialiser les champs de classe avec System.Text.Json ?

Comment sérialiser les champs de classe avec System.Text.Json ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-14 07:43:42491parcourir

How to Serialize Class Fields with System.Text.Json?

Utilisation de System.Text.Json.JsonSerializer et des champs de classe

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 :

  • Les champs publics peuvent être sérialisés en définissant JsonSerializerOptions.IncludeFields sur true.
  • Vous pouvez également utiliser l'attribut [JsonInclude] pour marquer les champs à sérialiser.

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 :

  1. Activer IncludeFields :
<code>var options = new JsonSerializerOptions { IncludeFields = true };
string json = JsonSerializer.Serialize(car, options);</code>
  1. Utilisez l'attribut [JsonInclude] :
<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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn