Maison > développement back-end > C++ > Comment désérialiser un JSON imbriqué en un dictionnaire imbriqué avec un mappage de type personnalisé en C# ?

Comment désérialiser un JSON imbriqué en un dictionnaire imbriqué avec un mappage de type personnalisé en C# ?

Patricia Arquette
Libérer: 2024-12-30 18:13:09
original
1008 Les gens l'ont consulté

How to Deserialize Nested JSON to a Nested Dictionary with Custom Type Mapping in C#?

Désérialisation du JSON imbriqué en dictionnaire imbriqué avec mappage de type JSON personnalisé

Désérialisation des objets JSON dans un dictionnaire imbriqué est une tâche courante, mais la désérialisation System.Text.Json par défaut entraîne souvent la représentation de tous les objets imbriqués sous forme d'instances JsonElement. Pour obtenir un mappage de type plus spécifique, un convertisseur JSON personnalisé est requis.

Convertisseur JSON personnalisé pour le mappage de type

Le convertisseur JSON personnalisé suivant, nommé ObjectAsPrimitiveConverter, fournit le mappage de type :

  • String -> chaîne
  • Numéro -> int/double
  • Objet -> Dictionnaire

Implémentation du convertisseur

Les méthodes Read et Write du convertisseur effectuent le mappage personnalisé :

  • Lire :

    • Analyses le jeton JSON entrant en fonction de son type.
    • Renvoie un type .Net spécifique (string, int, double, Dictionary, etc.) ou lève une exception si le type ne peut pas être analysé.
  • Écrire :

    • Gère les types d'objets par écrire un objet JSON vide, comme l'exige la conversion personnalisée.

Utilisation du convertisseur

Pour utiliser le convertisseur personnalisé, il doit être ajouté aux JsonSerializerOptions lors de la désérialisation :

var options = new JsonSerializerOptions
{
    Converters = { new ObjectAsPrimitiveConverter() },
    WriteIndented = true,
};

dynamic d = JsonSerializer.Deserialize<dynamic>(json, options);
Copier après la connexion

Configuration Options

Le convertisseur propose plusieurs options de configuration :

  • FloatFormat : Spécifie si les nombres à virgule flottante doivent être analysés comme doubles ou décimaux.
  • UnknownNumberFormat : Détermine comment gérer les nombres qui ne peuvent pas être analysés dans un type primitif .Net.
  • ObjectFormat : Configure le type de sortie pour les objets JSON comme un dictionnaire ou un ExpandoObject.

Sample Fiddle

Une démonstration en direct est disponible ici : [Sample Fiddle](https://dotnetfiddle.net/tD9pPI)

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