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

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

Barbara Streisand
Barbara Streisandoriginal
2025-01-07 12:51:45287parcourir

How to Deserialize JSON with Dynamic Keys in C#?

Clés dynamiques dans la désérialisation JSON

Lorsque vous traitez des données JSON contenant des clés dynamiques, l'accès aux propriétés des objets peut être difficile. Considérez les données 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"
        }
    }
}

Dans cet objet JSON, les clés sont des chaînes numériques, ce qui rend difficile la définition de classes avec des noms de propriétés statiques. Pour résoudre ce problème, nous pouvons exploiter la propriété Dictionary tapez en C#, où T représente la classe de nos données d'élément.

Structure de classe et désérialisation

Nous définissons les classes suivantes :

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

Ensuite, nous pouvons désérialiser les données JSON comme ceci :

RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);

Cela crée une instance RootObject avec un Dictionnaire utilisateurs nommés.

Accès aux propriétés de l'objet

Nous pouvons désormais accéder aux propriétés de l'objet à l'aide des touches du dictionnaire. Le code suivant parcourt les utilisateurs :

foreach (string key in root.users.Keys)
{
    User user = root.users[key];
    // Access properties using user.name, user.state, etc.
}

Sortie :

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

Cette approche nous permet de désérialiser les données JSON avec des clés dynamiques et d'accéder aux propriétés des objets de manière transparente.

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