JSON
Altova Website: JSON-Mapping
JSON (JavaScript Object Notation) ist ein beliebtes Datenformat zum Speichern und Transportieren von Daten. In der in MapForce Enterprise Edition können Sie Daten von jedem von MapForce unterstützten Form von und auf JSON mappen. JSON-Daten können auch als String serialisiert werden (z.B. um diese in eine Datenbank zu schreiben). Außerdem kann ein JSON-String mit Hilfe einer Parse/Serialise-Komponente zu einer JSON-Struktur geparst werden. Nähere Informationen dazu finden Sie unter Parsen und Serialisieren von Strings.
Um JSON-Dateien in Mappings verwenden zu können, muss als Mapping-Sprache eine der folgenden eingestellt sein: Built-in, C#, Java. Nähere Informationen dazu finden Sie unter Auswählen einer Transformationssprache. |
Ähnlich wie bei anderen von MapForce unterstützten Komponententypen wird eine Schemadatei benötigt, damit MapForce JSON-Daten auslesen oder schreiben kann. Wenn Sie keine Schemadatei zur Verfügung haben, kann MapForce automatisch eine generieren., siehe Hinzufügen von JSON-Dateien als Mapping-Komponenten. Wenn Sie eine nicht mit MapForce generierte JSON-Schemadatei bereitstellen, sollte diese eine Draft 04-, Draft 06-, Draft 07-, Draft 2019-09, Draft 2020-12-Version sein oder gar keine Versionsnummer haben. Nähere Informationen zu JSON-Schema-Versionen finden Sie in der JSON-Schema-Spezifikation.
Im Folgenden sehen Sie ein Beispiel dafür, wie eine JSON-Struktur in MapForce angezeigt wird:
JSON-Komponente in MapForce
Wie Sie unten sehen, entspricht die Struktur der Nodes in der JSON-Komponente der Struktur der JSON-Instanzdatei. Die JSON-Basistypen werden in MapForce normalerweise folgendermaßen dargestellt:
Typ | MapForce-Darstellung |
---|---|
Array | |
Boolean | |
Null | |
Zahl oder Ganzzahl | |
Objekt | |
String |
Außerdem gibt es die folgenden Sonderfälle:
Fall | Beschreibung |
---|---|
zusätzliche Eigenschaften, Pattern-Eigenschaften | In einer JSON-Komponente erscheint der Node unter jedem Objekt, dessen Eigenschaft additionalProperties true lautet oder im Schema nicht vorhanden ist. Damit können Sie von oder auf im Schema nicht explizit aufgelistete Eigenschaften mappen (siehe auch Beispielmapping von JSON auf CSV).
Dieser Node kann auch für Objekte mit der Eigenschaft patternProperties angezeigt werden. |
Subtypen | Laut dem JSON-Schema dürfen für Objekte und Arrays (anyOf, allOf, oneOf) Subtypen definiert werden. In MapForce werden solche Subtypen mit Hilfe spezieller Struktur-Nodes ( ), die in der JSON-Instanzdatei keine direkte Entsprechung haben, angezeigt.
Wenn in Ihrem Mapping Daten aus einer JSON-Datei gelesen werden, stellen solche Subtypen-Nodes nur dann einen Wert zur Verfügung, wenn der aktuelle Input-Wert entsprechend dem Subtyp-Schema gültig ist.
Wenn Ihr Mapping Daten in eine JSON-Datei schreibt, stellen Sie sicher, dass Sie den richtigen Subtyp ausgewählt haben. Wenn mehrere Subtypen befüllt werden, können Objekteigenschaften doppelt vorhanden sein, wodurch ungültige JSON-Ausgabedateien erzeugt werden können. |
Mehrere Typen unter demselben Pfad | Gemäß einem JSON-Schema dürfen mehrere Typen unter demselben Pfad vorkommen. In solchen Fällen werden in der MapForce-Komponente für alle Basistypen, die unter dem Pfad vorkommen, separate Struktur-Nodes angezeigt. |
Typnamen | In MapForce werden die Eigenschaften title und description von Typen im JSON-Schema (falls vorhanden) in den Feldern "type" und "annotation" angezeigt. Wenn title fehlt, kann MapForce auch einen Teil der URI aus der Eigenschaft $ref als Typnamen verwenden. |
Arrays, die gemischte Elementtypen enthalten | Wenn ein Array im JSON-Schema unterschiedliche Datenelementtypen hat (z.B. Strings und Zahlen), zeigt MapForce für jedes Datenelement einen "Item"-Node an. Wenn die Daten in eine JSON-Datei geschrieben werden, können Sie dadurch Arrays erstellen, die Datenelemente unterschiedlicher Typen enthalten. |
Als Tuples definierte Arrays | Wenn ein Array Datenelemente hat, deren Typ nach der Position im JSON-Schema zugewiesen wird, zeigt MapForce den nullbasierten Index das Datenelements als separate Struktur-Nodes an (z.B. item[0], item[1] usw. Beim Schreiben in eine JSON-Datei können Sie dadurch den Typ der einzelnen Datenelemente im Array anhand ihres nullbasierten Index definieren. |