Heim >Backend-Entwicklung >C++ >Wie kann ich JSON mit dynamischen Schlüsselnamen in C# deserialisieren?
Die Serialisierung von JSON-Daten mit unterschiedlichen Schlüsselnamen stellt eine Herausforderung bei der Deserialisierung dar. In diesem Artikel wird eine Lösung unter Verwendung eines dynamischen Eigenschaftsmusters in C# untersucht.
Wie können wir die JSON-Daten unten deserialisieren und gleichzeitig die dynamischen „numerischen“ Schlüssel beibehalten?
{ "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" } } }
Dynamische Eigenschaft Muster
Wir können die unterschiedlichen Schlüssel mithilfe eines Dictionary
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; } }
Deserialisierung
Um den JSON mithilfe des dynamischen Eigenschaftsmusters zu deserialisieren, verwenden wir den folgenden Code:
RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);
Dadurch wird eine Instanz von RootObject mit einem Dictionary
Zugriff auf Objektdaten
Jetzt können wir auf jedes untergeordnete Objekt mithilfe seiner jeweiligen Schlüssel zugreifen, indem wir das Benutzerwörterbuch durchlaufen:
foreach (string key in root.users.Keys) { User user = root.users[key]; // Access user properties using user.name, user.state, user.id }
Der folgende C#-Code demonstriert das Ganze Prozess:
class Program { static void Main(string[] args) { 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); // Iterate over users and print their data foreach (string key in root.users.Keys) { User user = root.users[key]; Console.WriteLine("key: " + key); Console.WriteLine("name: " + user.name); Console.WriteLine("state: " + user.state); Console.WriteLine("id: " + user.id); Console.WriteLine(); } } }
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 ich JSON mit dynamischen Schlüsselnamen in C# deserialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!