C#-Deserialisierungsmethode zur Verarbeitung von JSON-Daten mit dynamischen Schlüsseln
Beim Umgang mit einer JSON-Antwort mit dynamischen Schlüsseln (wie dem in der Frage bereitgestellten JSON) kann die Deserialisierung in ein stark typisiertes C#-Objekt schwierig werden. Da die Schlüssel unvorhersehbar sind, ist es nicht möglich, die Antwortstruktur direkt auf die Klassendefinition abzubilden.
Um dieses Problem zu lösen, können Sie die dynamische Typisierungsfunktion in C# verwenden. JSON kann mithilfe der JsonConvert.DeserializeObject
-Methode der Newtonsoft JSON-Bibliothek in dynamische Objekte deserialisiert werden. Dieses dynamische Objekt ermöglicht den Zugriff auf Eigenschaften mithilfe von Zeichenfolgenschlüsseln, die dynamisch aus der JSON-Antwort abgerufen werden.
Der folgende Codeausschnitt zeigt beispielsweise, wie die bereitgestellte JSON-Antwort in ein dynamisches Objekt deserialisiert wird:
<code class="language-csharp">dynamic dynamicObject = JsonConvert.DeserializeObject<dynamic>(json);</code>
Sie können jetzt auf Eigenschaften von dynamicObject
zugreifen, indem Sie den aus der JSON-Antwort abgerufenen Eigenschaftsnamen verwenden, zum Beispiel:
<code class="language-csharp">var nasdaqImbalanceName = dynamicObject["nasdaq_imbalance"].name; var dxOpenIMGroup = dynamicObject["DXOpen IM"].group;</code>
Wenn jedoch eine stark typisierte Darstellung erforderlich ist, ist ein fortgeschrittenerer Ansatz erforderlich. Sie können eine JSON-Antwort in eine Liste dieser benutzerdefinierten Objekte deserialisieren, indem Sie eine benutzerdefinierte Klasse erstellen, die die erforderlichen Eigenschaftsnamen zur Darstellung der JSON-Struktur enthält.
Für die bereitgestellte JSON-Antwort ist die folgende Klassendefinition geeignet:
<code class="language-csharp">public class Dataset { public string name { get; set; } public string group { get; set; } public string description { get; set; } }</code>
Dazu können Sie die Klasse JsonConvert
verwenden, um das JSON in ein Wörterbuch mit Zeichenfolgenschlüsseln für Dataset
-Objekte zu deserialisieren und es dann in eine Liste von Objekten umzuwandeln:
<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<string, Dataset>>(json); var datasetList = dictionary.Values.ToList();</code>
Mit diesem Ansatz können Sie dynamische JSON-Strukturen typsicher darstellen und so einen einfachen Zugriff auf Daten in C#-Anwendungen ermöglichen.
Das obige ist der detaillierte Inhalt vonWie deserialisiere ich JSON mit dynamischen Schlüsseln in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!