Heim >Backend-Entwicklung >C++ >Wie kann JSON.NET JSON mit dynamischen Schlüsseln effizient in zugängliche Objekte deserialisieren?

Wie kann JSON.NET JSON mit dynamischen Schlüsseln effizient in zugängliche Objekte deserialisieren?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-07 12:31:41575Durchsuche

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

Dynamische Deserialisierung von Schlüsselobjekten mit JSON.NET

Bei der Arbeit mit JSON-Daten, die Objekte mit dynamischen Schlüsseln enthalten, kann die herkömmliche Deserialisierung von Klassen eine Herausforderung darstellen. In diesem Artikel wird untersucht, wie Sie dieses Szenario mit JSON.NET bewältigen können.

Problemstellung

Berücksichtigen Sie die folgenden JSON-Daten:

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

Wie können wir direkt auf jedes Objekt zugreifen? aus diesen Daten, ohne dass eine manuelle Schlüsselanalyse erforderlich ist?

Lösung

JSON.NET bietet eine praktische Lösung zum Deserialisieren von Objekten mit dynamischen Schlüsseln unter Verwendung seines Dictionary Klasse. Mit dieser Klasse können wir JSON-Objekte als Wörterbücher darstellen, wobei die Schlüssel Zeichenfolgen und die Werte Objekte vom Typ T sind.

Implementierung

Um dies zu erreichen, definieren wir zwei Klassen:

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

Verwendung

Der folgende Code zeigt, wie auf die Objekte aus der Deserialisierung zugegriffen wird Daten:

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

Ausgabe

Der Code erzeugt die folgende Ausgabe:

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

Das obige ist der detaillierte Inhalt vonWie kann JSON.NET JSON mit dynamischen Schlüsseln effizient in zugängliche Objekte deserialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn