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.
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?
JSON.NET bietet eine praktische Lösung zum Deserialisieren von Objekten mit dynamischen Schlüsseln unter Verwendung seines Dictionary
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);
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(); }
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!