Maison >développement back-end >C++ >Comment personnaliser la sérialisation JSON dans .NET 7 avec IJsonTypeInfoResolver ?
Introduction
L'espace de noms System.Text.Json est un alternative moderne à Newtonsoft.Json, offrant une sérialisation et une désérialisation JSON hautes performances dans .NET. Une fonctionnalité qui n'était auparavant pas disponible dans System.Text.Json était un moyen de personnaliser le processus de résolution de contrat, similaire à l'interface IContractResolver dans Newtonsoft.Json. Cependant, cette fonctionnalité est désormais disponible dans .NET 7 grâce à l'implémentation de IJsonTypeInfoResolver.
Answer
Nouvelle fonctionnalité .NET 7 : IJsonTypeInfoResolver
Depuis .NET 7, l'espace de noms System.Text.Json introduit l'interface IJsonTypeInfoResolver, qui permet la personnalisation des contrats. À l'aide de cette interface, les développeurs peuvent créer des résolveurs de contrat personnalisés qui modifient les métadonnées d'un type spécifique lors de la sérialisation et de la désérialisation.
DefaultJsonTypeInfoResolver
L'équipe System.Text.Json a a fourni un résolveur de contrat par défaut, DefaultJsonTypeInfoResolver, qui implémente l'interface IJsonTypeInfoResolver. Ce résolveur offre des fonctionnalités similaires à DefaultContractResolver dans Newtonsoft.Json. Vous pouvez sous-classer DefaultJsonTypeInfoResolver ou y ajouter des modificateurs pour personnaliser les métadonnées du contrat en fonction de vos besoins.
Utilisation de DefaultJsonTypeInfoResolver avec des modificateurs
Pour adapter votre classe SelectiveSerializer pour qu'elle fonctionne avec System.Text.Json, vous pouvez utiliser la méthode d'extension SerializeSelectedFields sur le DefaultJsonTypeInfoResolver :
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), // Add other options as required PropertyNamingPolicy = JsonNamingPolicy.CamelCase, WriteIndented = true, };
Cela sérialisera sélectivement uniquement les propriétés spécifiées lors de la sérialisation.
Notes supplémentaires
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!