Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich verschachteltes JSON mit dynamischen Schlüsseln in C#-Klassen?

Wie deserialisiere ich verschachteltes JSON mit dynamischen Schlüsseln in C#-Klassen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-19 21:51:11388Durchsuche

How to Deserialize Nested JSON with Dynamic Keys into C# Classes?

Verschachteltes JSON in C#-Klasse deserialisieren

Deserialisieren Sie die JSON-Antwort in eine C#-Klasse. Der Schlüssel besteht darin, die Klassenstruktur mit den gesamten JSON-Daten abzugleichen. Hier ist die Lösung zum Deserialisieren des angegebenen JSON:

JSON-Struktur:

<code>{
    "results": {
        "jobcodes": {
            "1": { ... },
            "2": { ... },
            ...
        }
    }
}</code>

Frage:

Sie berücksichtigen nicht die dynamischen Schlüssel („1“ und „2“) im verschachtelten „Jobcodes“-Objekt.

Lösung:

Um Objekte mit dynamischen Schlüsseln zu verarbeiten, verwenden Sie Dictionary<string, JobCode>:

<code class="language-csharp">class Results
{
    [JsonProperty("jobcodes")]
    public Dictionary<string, JobCode> JobCodes { get; set; }
}</code>

Vollständige Klassenstruktur:

<code class="language-csharp">class RootObject
{
    [JsonProperty("results")]
    public Results Results { get; set; }
}

class JobCode
{
    [JsonProperty("_status_code")]
    public string StatusCode { get; set; }
    [JsonProperty("_status_message")]
    public string StatusMessage { get; set; }
    [JsonProperty("id")]
    public string Id { get; set; }
    [JsonProperty("name")]
    public string Name { get; set; }
}</code>

Deserialisierung:

JSON deserialisieren in RootObject Klasse:

<code class="language-csharp">RootObject obj = JsonConvert.DeserializeObject<RootObject>(jsonResponse);</code>

Ergebnis:

Sie können obj.Results.JobCodes.Values erhalten, indem Sie List<JobCode> besuchen. Jedes JobCode verfügt über einen entsprechenden Attributwert von JSON.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich verschachteltes JSON mit dynamischen Schlüsseln in C#-Klassen?. 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