JSON

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele >

JSON

Altova Website: _ic_linkJSON-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, siehe 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- oder Draft 07-Version sein oder gar keine Versionsnummer haben.

 

Im Folgenden sehen Sie ein Beispiel dafür, wie eine JSON-Struktur in MapForce angezeigt wird:

mf_json_01

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

disp_jsonarray

Boolean

disp_jsonboolean

Null

disp_jsonnull

Zahl oder Ganzzahl

disp_jsonnumber

Objekt

disp_jsonobject

String

disp_jsonstring

 

Außerdem gibt es die folgenden Sonderfälle:

 

Fall

Beschreibung

zusätzliche Eigenschaften, Pattern-Eigenschaften

In einer JSON-Komponente erscheint der Node disp_jsonproperty 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  ( disp_jsonsubtype ), 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.


© 2019 Altova GmbH