Maison > développement back-end > C++ > Comment JSON.NET peut-il désérialiser efficacement JSON avec des clés dynamiques en objets accessibles ?

Comment JSON.NET peut-il désérialiser efficacement JSON avec des clés dynamiques en objets accessibles ?

Patricia Arquette
Libérer: 2025-01-07 12:31:41
original
587 Les gens l'ont consulté

How can JSON.NET efficiently deserialize JSON with dynamic keys into accessible objects?

Désérialisation d'objets à clé dynamique avec JSON.NET

Lorsque vous travaillez avec des données JSON contenant des objets avec des clés dynamiques, la désérialisation de classe conventionnelle peut poser des défis. Cet article explorera comment aborder ce scénario à l'aide de JSON.NET.

Énoncé du problème

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

Comment pouvons-nous accéder directement à chaque objet à partir de ces données, sans avoir besoin d'une analyse manuelle des clés ?

Solution

JSON.NET propose un solution pratique pour désérialiser des objets avec des clés dynamiques à l'aide de son dictionnaire classe. Cette classe nous permet de représenter les objets JSON sous forme de dictionnaires, où les clés sont des chaînes et les valeurs sont des objets de type T.

Implémentation

Pour y parvenir, nous définissons deux classes :

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
string json = @"
{
    ""users"": {
        ""10045"": {
            ""name"": ""steve"",
            ""state"": ""NY"",
            ""id"": ""ebb2-92bf-3062-7774""
        },
        ""12345"": {
            ""name"": ""mike"",
            ""state"": ""MA"",
            ""id"": ""fb60-b34f-6dc8-aaf7""
        },
        ""100034"": {
            ""name"": ""tom"",
            ""state"": ""WA"",
            ""id"": ""cedf-c56f-18a4-4b1""
        }
    }
}";

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

Utilisation

Le code suivant montre comment accéder aux objets à partir du fichier désérialisé data:

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

Sortie

Le code produira la sortie suivante :

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!

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