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 réaliser une sérialisation sélective comme IContractResolver de Newtonsoft ?

DDD
Libérer: 2025-01-04 07:57:41
original
812 Les gens l'ont consulté

Can System.Text.Json Achieve Selective Serialization Like Newtonsoft's IContractResolver?

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 :

  1. Définir des méthodes d'extension fluides pour modifier le DefaultJsonTypeInfoResolver :

    public static DefaultJsonTypeInfoResolver SerializeSelectedFields(this DefaultJsonTypeInfoResolver resolver, IEnumerable<string> membersToSerialize);
    Copier après la connexion
  2. Définissez le TypeInfoResolver dans JsonSerializerOptions :

    var options = new JsonSerializerOptions
    {
        TypeInfoResolver = new DefaultJsonTypeInfoResolver()
            .SerializeSelectedFields("FirstName,Email,Id"),
        ...
    };
    Copier après la connexion

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

Notes supplémentaires

  • Utilisez une logique de chaîne invariante en fonction des paramètres régionaux pour construire des métadonnées de sérialisation.
  • System.Text.Json est sensible à la casse par défaut, vous devrez donc peut-être faire correspondre les noms de propriétés en respectant la casse.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal