Maison > développement back-end > C++ > Comment désérialiser JSON avec des clés d'objet enfant dynamiques en C# ?

Comment désérialiser JSON avec des clés d'objet enfant dynamiques en C# ?

Mary-Kate Olsen
Libérer: 2025-01-07 12:39:42
original
759 Les gens l'ont consulté

How to Deserialize JSON with Dynamic Child Object Keys in C#?

Désérialiser des objets enfants avec des clés dynamiques

Dans certains scénarios, vous pouvez rencontrer des données JSON avec des clés dynamiques pour des objets enfants. Pour désérialiser efficacement ces données, envisagez d'utiliser des dictionnaires au lieu des classes traditionnelles.

Utiliser des dictionnaires pour la désérialisation

Au lieu de créer une classe traditionnelle pour chaque objet enfant, vous pouvez utiliser un dictionnaire pour représenter les données. Chaque clé du dictionnaire représente une clé dynamique et chaque valeur est un objet de type T, qui doit représenter la structure de données de l'objet enfant.

Définition des classes

Pour cet exemple, définissez les classes comme suit :

class RootObject
{
    public Dictionary<string, User> users { get; set; }
}

class User
{
    public string name { get; set; }
    public string state { get; set; }
    public string id { get; set; }
}
Copier après la connexion

Désérialiser le JSON Données

Pour désérialiser les données JSON dans votre classe RootObject, utilisez le code suivant :

RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);
Copier après la connexion

Accès aux objets enfants

Une fois désérialisé, vous pouvez accéder aux objets enfants directement via le dictionnaire clé :

foreach (string key in root.users.Keys)
{
    User user = root.users[key];
    Console.WriteLine($"key: {key}");
    Console.WriteLine($"name: {user.name}");
    Console.WriteLine($"state: {user.state}");
    Console.WriteLine($"id: {user.id}");
    Console.WriteLine();
}
Copier après la connexion

Exemple

Considérez les données JSON suivantes :

{
    "users" : {
        "100034" : {
            "name"  : "tom",
            "state" : "WA",
            "id"    : "cedf-c56f-18a4-4b1"
        },
        "10045" : {
            "name"  : "steve",
            "state" : "NY",
            "id"    : "ebb2-92bf-3062-7774"
        },
        "12345" : {
            "name"  : "mike",
            "state" : "MA",
            "id"    : "fb60-b34f-6dc8-aaf7"
        }
    }
}
Copier après la connexion

À l'aide du code fourni, vous pouvez désérialiser les données et accéder à chaque objet enfant, ce qui donne le résultat suivant :

key: 10045
name: steve
state: NY
id: ebb2-92bf-3062-7774

key: 12345
name: mike
state: MA
id: fb60-b34f-6dc8-aaf7

key: 100034
name: tom
state: WA
id: cedf-c56f-18a4-4b1
Copier après la connexion

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