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
Mary-Kate Olsenoriginal
2025-01-07 12:39:42728parcourir

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; }
}

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);

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();
}

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"
        }
    }
}

À 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

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!

Déclaration:
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