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
Libérer: 2025-01-14 07:43:42
original
452 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion
  1. Utilisez l'attribut [JsonInclude] :
<code>[JsonInclude]
public string Model;
string json = JsonSerializer.Serialize(car);</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal