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

Comment puis-je sérialiser et désérialiser les champs de classe avec System.Text.Json ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-14 07:32:47757parcourir

How Can I Serialize and Deserialize Class Fields with System.Text.Json?

Utilisez System.Text.Json pour sérialiser et désérialiser les champs de classe

La version .NET Core 3.x de System.Text.Json ne prend pas en charge nativement la sérialisation et la désérialisation des champs de classe. Cela peut poser un problème pour les classes qui dépendent fortement des champs pour le stockage des données.

Pour résoudre ce problème, System.Text.Json propose deux méthodes différentes selon la version de .NET :

.NET Core 3.x

Malheureusement, dans .NET Core 3.x, System.Text.Json ne prend pas en charge les champs. Pour surmonter cette limitation, vous devez créer un convertisseur personnalisé pour gérer la sérialisation et la désérialisation des champs.

.NET 5 et supérieur

À partir de .NET 5, les champs publics peuvent être sérialisés en définissant la propriété JsonSerializerOptions.IncludeFields sur true. Vous pouvez également marquer explicitement les champs pour la sérialisation à l'aide de l'attribut [JsonInclude]. Un exemple est le suivant :

<code class="language-csharp">using System.Text.Json;

public class Car
{
    public int Year { get; set; }
    [JsonInclude]
    public string Model;
}

static void SerializeWithFields()
{
    var car = new Car { Model = "Fit", Year = 2008 };
    var options = new JsonSerializerOptions { IncludeFields = true };
    var json = JsonSerializer.Serialize(car, options);
    Console.WriteLine(json); // {"Model": "Fit", "Year": 2008}
}</code>

En tirant parti de ces techniques, vous pouvez vous assurer que vos classes peuvent être sérialisées et désérialisées efficacement à l'aide de System.Text.Json, même lorsqu'il s'agit de 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!

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