Heim >Backend-Entwicklung >C++ >Wie kann ich komplexe verschachtelte JSON-Daten in C#-Klassen deserialisieren?

Wie kann ich komplexe verschachtelte JSON-Daten in C#-Klassen deserialisieren?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-19 22:13:10488Durchsuche

How Can I Deserialize Complex Nested JSON Data into C# Classes?

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:

  1. Root-Level-Objekt: Erfordert eine „RootObject“-Klasse, um die gesamte JSON-Struktur darzustellen und eine „Results“-Eigenschaft zu enthalten.
  2. Verschachtelte Objekte: Die Klasse „Results“ sollte eine Eigenschaft „jobcodes“ vom Typ Dictionary<string, JobCode> enthalten. Dies spiegelt die dynamische Natur des „jobcodes“-Objekts in der JSON-Antwort wider.
  3. JobCode-Klasse: Die Klasse „JobCode“ bleibt unverändert und stellt einzelne Jobcode-Details dar.

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!

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