---
title: Datenzuordnung im JSON-Format
date: 2020-02-24
categories:
  - data-integration
  - database-mapping
  - json
tags:
  - data-mapping
  - database-mapping
  - json-lines
  - json-mapping
  - mapforce
description: Altova MapForce unterstützt die Verarbeitung von JSON Lines-Daten sowohl als Quelle als auch als Ziel, beispielsweise um Datensätze aus einer Datenbank zu extrahieren und in das .jsonl-Format für die Ausgabe zu konvertieren.
---
Status: #blog

Tags:  #data-mapping #database-mapping #json-lines #json-mapping #mapforce

Categories: [data-integration](/blog/de/category/data-integration.md) | [data-integration](/blog/de/category/data-integration.md) | [json](/blog/de/category/json.md)
# Datenzuordnung im JSON-Format

Das JSON-Datenformat entwickelt sich weiterhin als offener Standard, da es kreativ auf neue Anforderungen für den Datenaustausch angewendet wird. JSON Lines, definiert unter [http://jsonlines.org/](http://jsonlines.org/), ist ein praktisches Textformat zur Speicherung strukturierter Daten, bei dem jeder Datensatz eine einzelne Zeile und ein gültiges JSON-Objekt darstellt. JSON Lines eignet sich gut für tabellarische Daten und identifiziert Datentypen eindeutig. Dies ermöglicht die Verarbeitung von Datensätzen einzeln, was das Format sehr nützlich für den Export und die Übertragung von Daten macht.

Altova MapForce unterstützt die Verarbeitung von JSON Lines-Daten sowohl als Datenquelle als auch als Ziel. Betrachten wir ein Mapping-Projekt, bei dem Datensätze aus einer Datenbanktabelle extrahiert und in eine JSON Lines-Datei für die Ausgabe umgewandelt werden.

![](/blog/images/JSON_mapping.jpg)

<!--more-->

MapForce unterstützt [fortgeschrittene Datenzuordnung, -konvertierung und -transformation](https://www.altova.com/de/mapforce) zwischen allen gängigen Datenformaten und relationalen Datenbanken. Für dieses Beispiel nehmen wir an, dass wir die Aufgabe erhalten haben, eine JSON Lines-Datei zu erstellen, die Informationen enthält, die in einer Datenbanktabelle gespeichert sind, die ursprünglich für eine mobile Umfrage-Anwendung erstellt wurde. Die Tabelle "Cars" ist Teil einer Datenbank, die Modellnamen und Spezifikationen für Autos verschiedener Hersteller enthält.

### **Datenabbildung: JSON-Dateien als Ausgabeziel**

Unsere Strategie zur Erstellung dieser Zuordnung der JSON Lines-Daten ist einfach: Wir analysieren die bestehende Datenbanktabelle, erstellen eine kleine Instanzdatei, um die Daten im JSON Lines-Format darzustellen, ordnen dann die Spalten der Datenbanktabelle den entsprechenden Elementen in der JSON Lines-Ausgabe mithilfe eines MapForce-Zuordnungsdesigns zu und klicken anschließend einfach auf die Schaltfläche "MapForce-Ausgabe", um die gesamte Tabelle automatisch zu verarbeiten und die Ausgabedatei zu generieren.

Wir werden Tools aus dem Altova MissionKit verwenden, um jeden Schritt des Prozesses zu erledigen. Zunächst öffnen wir die Datenbank mit DatabaseSpy und betrachten die Tabelle "Cars" in der Tabellenansicht:

[![Quelltabelle der Datenbank für die Datenzuordnung im JSON-Format](/blog/images/table-design-view.png)](table-design-view.png)

Die Tabelle enthält 9 Spalten, die den JSON-String- und numerischen Datentypen entsprechen, obwohl einige Spalten auch leere Werte enthalten dürfen. Das Fenster auf der linken Seite zeigt die Anzahl von 6.266 Datensätzen an. Mit dem Kontextmenü, das durch einen Rechtsklick aufgerufen wird, können wir die ersten 200 Datensätze abrufen, um die Daten zu überprüfen:

[![Inhalt der Datenbanktabelle für die Datenzuordnung im JSON-Format](/blog/images/table-contents-1.png)](table-contents-1.png)

Die Zeilen 6 und 7 zeigen, dass einige Zeilen tatsächlich Null-Werte enthalten. Nun, da wir die Quelldaten verstehen, können wir eine kleine Beispiel-Datei erstellen, um die Datenstruktur in einer einzigen JSON-Zeile darzustellen. Die [JSON-Bearbeitungsfunktionen](https://www.altova.com/de/xmlspy-xml-editor#json_editor) von XMLSpy bieten dafür ein ausgezeichnetes Werkzeug:

[![Beispiel-Datei für die Datenzuordnung im JSON-Format (JSON Lines)](/blog/images/jsonl-instance.png)](jsonl-instance.png)

Unsere JSON-Eingabe ist in XMLSpy farblich gekennzeichnet, und wir können überprüfen, ob die Datei korrekt formatiert ist. Bitte beachten Sie, dass wir die Datei mit der Erweiterung .jsonl gespeichert haben, um anzuzeigen, dass es sich um JSON-Daten im Zeilenformat handelt.

Als Nächstes erstellen wir eine neue MapForce-Instanz, um die Datenzuordnung durchzuführen, und fügen die Datenbanktabelle sowie die .jsonl-Instanzdatei hinzu:

[![Neues Design für die Darstellung von Daten im JSON-Lines-Format](/blog/images/new-data-mapping.png)](new-data-mapping.png)

Als wir die .jsonl-Instanzdatei importierten, erstellte MapForce automatisch ein JSON-Schema, das die möglichen Datentypen für jede Zelle im Array beschreibt, das unsere Daten repräsentiert. Das Standard-Schema beschreibt nur ein Element, aber wir können dieses Element auswählen und über das Kontextmenü Duplikate hinzufügen, wodurch 8 zusätzliche Elemente entstehen:

[![JSON-Schema mit 9 Einträgen für die Datenzuordnung von JSON-Dateien](/blog/images/data-mapping-2.png)](data-mapping-2.png)

Als Nächstes verbinden wir die Datenbankspalten mit dem entsprechenden Datentyp für jede Zelle im JSON-Array. Außerdem verbinden wir die Tabelle "Cars" mit dem ersten Eintrag am Anfang des JSON-Schemas. Dadurch wird die Zuordnung angewiesen, für jede Zeile in der Tabelle "Cars" eine neue Ausgabeleiste zu erstellen.

[![Verbindung der Datenbankquelle mit dem Ausgabeziel](/blog/images/data-mapping-3.png)](data-mapping-3.png)

Wir könnten auf die Schaltfläche "Ausgabe" am unteren Rand des Mapping-Fensters klicken, um die gesamte Tabelle zu konvertieren und das Ergebnis vorab anzuzeigen. Es gibt jedoch eine Einschränkung: Wir haben noch keine leeren Werte berücksichtigt. Wenn wir die Ausgabedatei jetzt speichern, werden alle leeren Werte in der Datenbank vollständig ignoriert, wodurch Zeilen in der JSON Lines-Datei entstehen, die weniger als 9 Felder enthalten. Diese Zeilen wären später bei der Verarbeitung nicht korrekt interpretierbar.

### Datenabbildung: JSON-Dateien mit Nullwerten

MapForce enthält einen Filter, mit dem wir Null-Felder identifizieren und verarbeiten können

[![Umgang mit leeren Feldern beim Zuordnen von JSON-Daten](/blog/images/data-mapping-4-1.png)](data-mapping-4-1.png)

Ein einzelnes Element in einem JSON-Array kann nicht gleichzeitig eine Zahl und ein Null-Wert sein. Die Filter und die verbundenen Komponenten legen fest, dass Null-Werte in der Spalte "Zylinder" auf den Datentyp "Null" in Element 4 abgebildet werden. Wenn ein Wert nicht Null ist, wird er auf den Datentyp "Zahl" abgebildet. Wir können diese identische Filterstruktur für alle verbleibenden Spalten verwenden, die Null-Werte enthalten können.

MapForce bietet eine Funktion zum Erstellen von benutzerdefinierten Funktionen, mit der wir die Filterstruktur speichern und diese sowohl in der aktuellen Zuordnung als auch in anderen JSON-Datenzuordnungen wiederverwenden können, insbesondere wenn diese Null-Werte enthalten. Wir wählen einfach den Filter und die zugehörigen Komponenten aus und wählen im Hauptmenü der Funktionen die Option "Benutzerdefinierte Funktion erstellen":

[![Eine benutzerdefinierte Funktion erstellen, um Null-Einträge zu verarbeiten](/blog/images/data-mapping-user-funct-1030x381.png)](data-mapping-user-funct.png)

Die benutzerdefinierte Funktion kapselt die ausgewählten Komponenten, ersetzt sie in der ursprünglichen Zuordnung und wird der Funktionsbibliothek hinzugefügt

[![Benutzerdefinierte Funktion zur Erkennung von Null-Werten in der Quelldatenbank](/blog/images/user-function-def-1.png)](user-function-def-1.png)

Wir können die Benutzerfunktion einfach aus der Bibliothek ziehen und mit den anderen Datenbankspalten verbinden, die Nullwerte zulassen.

Manchmal, wenn JSON-Daten transformiert werden, kann es wünschenswert sein, einen Null-Textwert in eine leere Zeichenkette umzuwandeln. MapForce kann diese Anforderung mit einer Funktion zur Ersetzung fehlender Werte erfüllen. Im folgenden Bild wird ein Null-Textwert in der letzten Datenbankspalte in eine leere Zeichenkette umgewandelt:

[![Eine Null-Werte auf eine leere Zeichenkette abbilden](/blog/images/data-mapping-5a.png)](https://www.altova.com/blog/?attachment_id=4698)

Hier ist eine Darstellung der abgeschlossenen Datenzuordnung mit der Benutzerfunktion zur Nullwert-Erkennung:

![Eine Darstellung der abgeschlossenen Datenzuordnung für JSON Lines](/blog/images/data-mapping-complete-1030x870.png)

Beachten Sie die Benutzerfunktion für den Null-Detektor, die im Bibliotheksfenster auf der linken Seite hervorgehoben ist.

Nachdem alle möglichen Nullwerte berücksichtigt wurden, können wir auf die Schaltfläche "Ausgabe" klicken, um die .jsonl-Ausgabedatei zu erstellen:

[![Eine Teilansicht der Ausgabedatei im .jsonl-Format](/blog/images/output-view.png)](output-view.png)

Bitte beachten Sie, dass Zeile 1675 und andere Zeilen sowohl einen Nullwert als auch eine leere Zeichenkette enthalten, während die Zeilen 1690 bis 1691 vollständig mit Daten gefüllt sind.

Für eine einmalige Transformation kann diese Ausgabedatei sofort gespeichert werden. Wenn die Datenbank kontinuierlich aktualisiert wird und später erneut transformiert werden muss, können wir die Zuordnung als Ausführungsdatei für MapForce Server speichern, um die Verarbeitung automatisiert mit MapForce Server durchzuführen, oder sie direkt auf dem FlowForce Server bereitstellen.

### Datenzuordnung: JSON-Dateien als Quelldateien

Die folgende Datenzuordnung veranschaulicht, wie ein ähnlicher Datensatz von einer .jsonl-Quelldatei in eine Datenbanktabelle übertragen werden kann.

[![Datenzuordnung: JSON-Dateien als Quelle für eine neue Datenbanktabelle](/blog/images/data-mapping-reversed.png)](data-mapping-reversed.png)

Um diese Version verständlicher zu machen, haben wir das JSON-Schema in XMLSpy bearbeitet, indem wir Beschreibungen hinzugefügt und ungültige Datentypen für jede Zelle im Array entfernt haben. Durch Klicken auf die Schaltfläche "Ausgabe" für diese Zuordnung wird ein SQL-Skript generiert, das die Daten in die Datenbanktabelle lädt.

Bitte beachten Sie, dass keines der Null-Elemente eine Verbindung vom Quellsystem zum Zielsystem benötigt. Alle erforderlichen Null-Werte werden automatisch in die Datenbanktabelle eingefügt, wie in Zeile 18 gezeigt

[![Generiertes SQL-Skript zur Zuordnung von JSON-Daten zu einer Datenbanktabelle](/blog/images/SQL-script-ouput.png)](SQL-script-ouput.png)

[Laden Sie eine kostenlose Testversion herunter](https://www.altova.com/de/mapforce/download), die Tutorials, Hilfestellungen und viele Beispiele enthält, um mit Ihrem eigenen Projekt für die Datenzuordnung von JSON-Dateien oder anderen Anforderungen an die Datenzuordnung, -konvertierung und -transformation zu beginnen!
