Zuordnen von JSON-Daten
Geschrieben vonOssi Galkin Vor über einer Woche aktualisiertZuordnen von JSON-Daten mithilfe von Objekten
Es kommt häufig vor, dass Sie beim Erstellen einer Integration zwischen zwei Systemen eine Datenzuordnung vornehmen müssen. Es ist möglich, den JSON-String in die Aufgabe fest zu codieren, die die Daten sendet oder speichert, aber in manchen Fällen hängt das JSON-String-Format von den Daten ab, die dem Prozess als Eingabe übergeben werden, und die Festcodierung des Formats ist keine Option. Beispielsweise müssen Sie je nach bestimmten Regeln unterschiedliche Schlüssel verwenden oder ein JSON-Array erstellen, dessen Anzahl an JSON-Dateneinträgen je nach Eingabedaten variiert. In solchen Szenarien sind JObjects und JArrays großartige Tools, um die Eingabedaten in die gewünschten JSON-Daten umzuwandeln. In diesem Modul werden wir uns unterschiedliche Möglichkeiten zum Zuordnen von JSON-Daten mithilfe von Objekten ansehen.
Neues JObject erstellen
Unten haben wir ein JSON-Datenbeispiel, das wir in diesem Modul zuordnen werden.
Nehmen wir an, wir möchten diese Daten in ein neues JSON mit Arbeitgeberinformationen umwandeln. Wir möchten die Schlüssel in den Eingabedaten ändern und einige neue Schlüssel hinzufügen. Um dies zu erreichen, können wir ein neues JObject erstellen, dem wir die zu erstellenden Daten zuordnen. Zuerst müssen wir die Eingabedaten in JObject analysieren, damit wir einfach auf die Eingabewerte zugreifen können. In diesem Beispiel verwenden wir die JObject.Parse-Methode.
Wir können dann ein C#-Anweisungselement verwenden, um ein neues JObject zu erstellen, in dem wir die Eingabedaten abbilden. Ein großartiges Merkmal eines JObjects ist, dass wir nicht alle Eigenschaften des Objekts beim Erstellen des Objekts einführen müssen, sondern dem Objekt dynamisch neue Eigenschaften hinzufügen können, wenn wir die Variable, die das Objekt enthält, wie folgt definieren:dynamisch. Im folgenden Beispiel kombinieren wir "Firstname" und "Surname" zu "FullName" und fügen eine neue Eigenschaft "CostUnit" hinzu, in der wir die Einheit speichern, in der die Person arbeitet. Dieses neue JObject speichern wir dann in der Variable "mappedJson". Beachten Sie, dass wir beim Erstellen der Eigenschaft "FullName"Zeichenfolgeninterpolationund nichtLenkerdie beim Zugriff aufReferenzenim Text.
Anschließend können wir die ToString-Methode aufrufen, um das erstellte JObject in einen JSON-String umzuwandeln. Unten sehen Sie ein Beispiel für den Aufruf der Methode und das Ergebnis, das der Aufruf erzeugt.
Neues JArray erstellen
Manchmal erhalten wir mehrere JSON-Einträge in einem JSON-Input und müssen diese alle in ein neues JSON-Array abbilden, das an ein anderes System gesendet oder in einer Datenbank gespeichert wird. In diesem Fall können wir ein JArray verwenden, in dem wir alle neuen zugeordneten JObjects speichern. Nehmen wir an, wir haben das folgende JSON, das wir auf die gleiche Weise abbilden möchten wie im vorherigen Beispiel.
Um einfach auf diese Daten zugreifen zu können, müssen wir dieses Eingabe-JSON mithilfe einer Frends.Json.ConvertJsonStringToJToken-Aufgabe oder durch Aufrufen der JArray.Parse-Methode in einem C#-Ausdruckselement in ein JArray analysieren. In diesem Beispiel rufen wir die JArray.Parse-Methode in einem C#-Ausdruckselement auf.
Nachdem wir die Daten in ein JArray geparst haben, können wir die Daten durchlaufen und die Zuordnung für jeden der Einträge vornehmen. Bevor wir den Iterator implementieren, müssen wir ein neues Objekt aus der JArray-Klasse erstellen, damit wir dem Array JObject-Objekte hinzufügen können. Wir können dies mithilfe eines C#-Ausdruckselements tun.
Wir können dann das Foreach-Element verwenden, um durch das Eingabe-JSON zu iterieren, das jetzt in ein JArray konvertiert wird.
In der Iteration können wir ein C#-Anweisungselement verwenden, um ein neues JObject zu erstellen, wie wir es im vorherigen Beispiel getan haben. Der Unterschied zwischen dem vorherigen Beispiel und diesem Szenario besteht darin, dass wir das erstellte JObject nicht zurückgeben, sondern es dem JArray hinzufügen, das wir vor der Iteration eingeführt haben.
Nach der Iteration können wir die ToString-Methode aufrufen, um aus dem JArray einen JSON-String zu erstellen, den wir dann als Parameter an andere Elemente übergeben können. Unten sehen Sie ein Beispiel für den Aufruf und das Ergebnis der Datenzuordnung.
Erstellen von JSON aus einem Objekt
In manchen Fällen möchten Sie vielleicht JSON aus einem Objekt erstellen. Sie erhalten beispielsweise ein Ergebnis von einer Aufgabe und möchten aus diesem Objekt JSON erstellen. Um dies zu erreichen, können wir ein JObject aus dem Objekt erstellen, indem wir denJObject.VonObjekt-Methode. Diese Methode übernimmt die Eigenschaften des Objekts und wandelt sie in JObject-Eigenschaften um. Anschließend können wir die ToString-Methode verwenden, um das JObject in einen JSON-String umzuwandeln.
Schauen wir uns ein Beispiel für den obigen Fall an. Zunächst können wir einanonymes Objektwelches Eigenschaften enthält, die wir zuvor als JSON an den Prozess übergeben haben.
Wir können dann die JObject.FromObject-Methode aufrufen, um dieses anonyme Objekt in ein JObject umzuwandeln.
Sobald wir das JObject erstellt haben, können wir die ToString-Methode aufrufen, um aus dem JObject einen JSON-String zu erstellen. Unten sehen Sie ein Beispiel für den Aufruf und das dadurch erzeugte Ergebnis.
Dynamisches Hinzufügen von Schlüsseln mithilfe des Wörterbuchs
Manchmal reicht es nicht aus, Daten in fest codierte JSON-Schlüssel abzubilden, sondern Sie müssen die Schlüssel auch dynamisch erstellen und ihnen Daten zuordnen. Dies kann mithilfe einesWörterbuch. Kurz gesagt ist ein Wörterbuch eine Sammlung von Schlüssel-Wert-Paaren. Wie der Name schon sagt, ähnelt es jedem echten Wörterbuch, beispielsweise einem Finnisch-Englisch-Finnisch-Sprachbuch. Wir können diesen Datentyp verwenden, um Schlüssel-Wert-Paare zu erstellen, und dann können wir auf dieselbe Weise wie im vorherigen Beispiel ein JObject aus dem Wörterbuch erstellen, indem wir die JObject.FromObject-Methode verwenden.
Nehmen wir das vorherige Beispiel, in dem wir ein JArray mit mehreren JObjects erstellt haben. Die Schritte sind dieselben wie in diesem Beispiel, aber ändern wir den Schritt, in dem wir ein neues JObject erstellt und es dem JArray hinzugefügt haben. Dieses Mal verwenden wir Dictionary statt JObject. Wir können dieselben Schlüssel „FullName“ und „CostUnit“ hinzufügen, aber jetzt fügen wir auch eine Eigenschaft hinzu, die Informationen darüber enthält, zu welcher Altersgruppe die Person gehört. Die Eigenschaft wird entsprechend dem Alter der Person bestimmt. Zuerst bestimmen wir den Altersgruppenschlüssel mitif-Anweisungund dann fügen wir das Schlüssel-Wert-Paar zum Wörterbuch hinzu. Zuletzt erstellen wir ein JObject aus dem Wörterbuch und fügen es dem JArray hinzu.
Wir können dann die JArray.ToString-Methode aufrufen, um eine JSON-Zeichenfolge aus dem JArray zu erstellen und zu sehen, wie durch die dynamische Zuordnung von Schlüsseln und Werten Altersgruppen erstellt wurden.
Der nächste Artikel istEinführung in die Verwendung von LINQ mit JSON-Objekten
Verwandte ArtikelEinführung in C#-Datentypen in FrendsSo verwenden Sie LINQ in Frends zur Datenextraktion und -manipulationEinführung in JSON-ObjekteEinführung in die Verwendung von LINQ mit JSON-ObjektenEinführung in das Erstellen einer JSON-Nachricht – ein nicht ganz einfaches Beispiel