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
Freigeben: 2025-01-07 12:31:41
Original
537 Leute haben es durchsucht

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"
        }
    }
}
Nach dem Login kopieren

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; }
}
Nach dem Login kopieren
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);
Nach dem Login kopieren

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();
}
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage