Maison >développement back-end >C++ >System.Text.Json peut-il réaliser une sérialisation sélective comme IContractResolver de Newtonsoft ?
System.Text.Json peut-il implémenter une sérialisation sélective comme IContractResolver ?
Le nouvel espace de noms System.Text.Json n'a pas d'équivalent exact à celui de Newtonsoft IContractRésolveur. Cependant, .NET 7 introduit la personnalisation des contrats, qui offre des fonctionnalités similaires.
Personnalisation des contrats dans .NET 7
La personnalisation des contrats permet aux utilisateurs de personnaliser les métadonnées de sérialisation JSON à l'aide de IJsonTypeInfoResolver. interface. En implémentant cette interface, les développeurs peuvent créer leurs propres résolveurs de contrat pour spécifier les propriétés à sérialiser.
Création d'un résolveur de contrat personnalisé
Pour créer un résolveur de contrat personnalisé qui sélectionne sérialise les champs, vous pouvez suivre ces étapes :
Définir des méthodes d'extension fluides pour modifier le DefaultJsonTypeInfoResolver :
public static DefaultJsonTypeInfoResolver SerializeSelectedFields(this DefaultJsonTypeInfoResolver resolver, IEnumerable<string> membersToSerialize);
Définissez le TypeInfoResolver dans JsonSerializerOptions :
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), ... };
Exemple
Le code suivant montre comment sérialiser sélectivement le "FirstName", Propriétés « E-mail » et « Id » utilisant la personnalisation du contrat :
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), ... }; // Serialize the object var json = JsonSerializer.Serialize(obj, options);
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!