Sérialisation et désérialisation JSON dans .NET - Vue d’ensemble
L’espace de noms System.Text.Json fournit des fonctionnalités de sérialisation vers et de désérialisation à partir de JavaScript Object Notation (JSON) (ou marshalling et unmarshalling). La sérialisation est le processus de conversion de l’état d’un objet, c’est-à-dire les valeurs de ses propriétés, dans une forme qui peut être stockée ou transmise. La forme sérialisée n’inclut aucune information sur les méthodes associées d’un objet. La désérialisation reconstruit un objet à partir de la forme sérialisée.
La conception de la bibliothèque System.Text.Json
met l’accent sur les performances élevées et la faible allocation de mémoire sur un ensemble complet de fonctionnalités. La prise en charge intégrée d’UTF-8 optimise le processus de lecture et d’écriture de texte JSON encodé en UTF-8, qui est l’encodage le plus répandu pour les données sur le web et les fichiers sur disque.
La bibliothèque fournit également des classes pour utiliser un modèle DOM (document object model) en mémoire. Cette fonctionnalité permet un accès aléatoire aux éléments d’un fichier ou d’une chaîne JSON.
Pour Visual Basic, il existe des limitations sur les parties de la bibliothèque que vous pouvez utiliser. Pour plus d’informations, consultez le Support Visual Basic.
Comment obtenir la bibliothèque
La bibliothèque est intégrée dans le cadre du framework partagé pour .NET Core 3.0 et versions ultérieures. La fonctionnalité de génération de source est intégrée dans le cadre du framework partagé pour .NET 6 et versions ultérieures.
Pour les versions de framework antérieures à .NET Core 3.0, installez le package NuGet System.Text.Json. Le package prend en charge :
- .NET Standard 2.0 et ultérieur
- .NET Framework 4.6.2 et versions ultérieures
- .NET 8 et versions ultérieures
Espaces de noms et API
- L’espace de noms System.Text.Json contient tous les points d’entrée et les types principaux.
- L’espace de noms System.Text.Json.Serialization contient des attributs et des API pour les scénarios avancés, et la personnalisation spécifique à la sérialisation et à la désérialisation.
- L’espace de noms System.Net.Http.Json contient des méthodes d’extension pour la sérialisation et la désérialisation des charges utiles JSON à partir du réseau.
Important
System.Text.Json
ne prend pas en charge les API de sérialisation suivantes (que vous avez éventuellement déjà utilisées) :
- Attributs provenant de l’espace de noms System.Runtime.Serialization.
- L’attribut System.SerializableAttribute et l’interface ISerializable. Ces types sont utilisés uniquement pour la Sérialisation binaire et XML.
Réflexion et génération de source
Par défaut, System.Text.Json
collecte les métadonnées dont il a besoin pour accéder aux propriétés des objets pour la sérialisation et la désérialisation au moment du temps d’exécution en utilisant réflexion. En guise d’alternative, System.Text.Json
peut utiliser la fonctionnalité de génération de source C# pour améliorer les performances, réduire l’utilisation de la mémoire privée et faciliter le découpage d’assembly, ce qui réduit la taille de l’application.
Pour plus d’informations, voir Réflexion et génération de sources.
Informations de sécurité
Pour plus d’informations sur les menaces de sécurité qui ont été prises en compte lors de la conception de JsonSerializer et sur la façon dont elles peuvent être atténuées, consultez Modèle de menace System.Text.Json
.
Sécurité des threads
Le sérialiseur System.Text.Json
a été conçu en gardant à l’esprit la sécurité des threads. En pratique, cela signifie qu’une fois verrouillées, les instances JsonSerializerOptions peuvent être partagées de façon sécurisée entre plusieurs threads. JsonDocument fournit une représentation DOM thread-safe, immuable et dans .NET 8 (et les versions ultérieures), pour les valeurs JSON.