Komplexe verschachtelte JSON-Daten in die C#-Klasse deserialisieren
In einigen Fällen gibt die API möglicherweise JSON-Daten zurück, die mehrere Ebenen verschachtelter Objekte enthalten. Die Deserialisierung solcher Daten in eine C#-Klasse kann eine Herausforderung sein, insbesondere wenn die Objektstruktur nicht genau mit der JSON-Antwort übereinstimmt.
Detaillierte Erläuterung des Problems
Wie im Beispiel gezeigt, enthält die bereitgestellte JSON-Antwort ein „results“-Objekt auf Stammebene, das ein „jobcodes“-Objekt enthält, das mehrere Schlüssel-Wert-Paare enthält, die einzelne Jobcodes darstellen. Das ursprüngliche C#-Objektdesign berücksichtigte jedoch nur eine JobCode-Instanz, was dazu führte, dass bei der Deserialisierung Nullwerte zurückgegeben wurden.
Lösung
Um komplexe JSON-Daten erfolgreich zu deserialisieren, müssen Sie unbedingt eine Klassenstruktur erstellen, die genau mit der JSON-Antwort übereinstimmt. In diesem Fall:
Dictionary<string, JobCode>
enthalten. Dies spiegelt die dynamische Natur des „jobcodes“-Objekts in der JSON-Antwort wider. Deserialisierungscode
Mit der richtigen Klassenstruktur wird die Deserialisierung einfach:
<code class="language-csharp">RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);</code>
Diese Codezeile deserialisiert die JSON-Antwort an die Klasse „RootObject“ und gibt Ihnen Zugriff auf deren Eigenschaft „Results“ und die zugehörigen Jobcodedetails.
Zurück zur JobCodes-Liste
Um endlich die Liste der Jobcodes abzurufen, können Sie diese mit einer einfachen Schleife aus dem Wörterbuch „JobCodes“ extrahieren:
<code class="language-csharp">List<JobCode> jobCodes = new List<JobCode>(); foreach (KeyValuePair<string, JobCode> jobCode in obj.Results.JobCodes) { jobCodes.Add(jobCode.Value); }</code>
Indem Sie diese Schritte befolgen, können Sie komplexe JSON-Daten, die verschachtelte Objekte enthalten, effizient in C#-Klassen deserialisieren und so den Zugriff auf und die Verarbeitung von API-Antworten erleichtern.
Das obige ist der detaillierte Inhalt vonWie kann ich komplexe verschachtelte JSON-Daten in C#-Klassen deserialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!