Zum Inhalt springen
LeedyBox
Unterstützen

Zwischen JSON, CSV und YAML umwandeln

JSON, CSV und YAML können oft dieselben Daten aufnehmen, lassen sich aber nicht 1:1 ineinander abbilden. Diese Anleitung erklärt, wofür sich jedes Format eignet, welche Details sich bei einer Umwandlung ändern können und wie Sie das Ergebnis prüfen.

Wofür sich jedes Format eignet

JSON ist das übliche Format für Web-APIs und für Konfigurationen, die von Programmen gelesen werden. Es hat einen kleinen, klaren Satz von Typen: Objekte, Arrays, Zeichenketten, Zahlen, boolesche Werte und null. Durch die strenge Syntax kann Software es leicht verarbeiten, Kommentare gibt es aber nicht.

CSV ist eine Tabelle: eine Zeile pro Datensatz, ein Wert pro Spalte. Tabellenkalkulationen, Datenbanken und Reporting-Tools importieren es problemlos, und für große, flache Datenmengen ist es kompakt. Es gibt keine standardisierte Möglichkeit, Datentypen oder verschachtelte Strukturen zu beschreiben.

YAML ist dafür gedacht, von Menschen geschrieben und gelesen zu werden. Für Konfigurationsdateien ist es beliebt, weil es Kommentare erlaubt, Einrückung statt Klammern verwendet und dieselben Strukturen wie JSON beschreiben kann. Die flexible Syntax bedeutet aber auch, dass kleine Fehler bei Einrückung oder Anführungszeichen die Bedeutung verändern können.

Merkmal JSON CSV YAML
Verschachtelte Objekte und Arrays Ja Nein (flache Tabelle) Ja
Datentypen Zeichenkette, Zahl, boolescher Wert, null Nur Text Aus dem Wert abgeleitet
Kommentare Nein Nein Ja
Typische Verwendung APIs, App-Daten Tabellenkalkulationen, Importe Konfigurationsdateien

Verschachtelung wird in CSV abgeflacht

Eine CSV-Datei hat nur Zeilen und Spalten, daher müssen verschachtelte Daten umgeformt werden. Dafür gibt es zwei übliche Ansätze. Der erste flacht die Struktur zu Spaltennamen wie address.city und address.zip ab. Der zweite behält den verschachtelten Teil als JSON-String in einer einzelnen Zelle. Der LeedyBox-Datenkonverter bietet beide Optionen.

Beide Ansätze haben Vor- und Nachteile. Abgeflachte Spalten sind in einer Tabellenkalkulation leicht zu lesen, aber Arrays unterschiedlicher Länge erzeugen viele dünn besetzte Spalten. JSON-Strings in Zellen erhalten die Struktur, sind aber schwerer von Hand zu bearbeiten. Wenn Sie später zurück in JSON umwandeln, prüfen Sie, ob die Struktur der ursprünglichen entspricht.

Typen werden in CSV zu Text

CSV speichert jeden Wert als Text. Die Zahl 42, die Zeichenkette "42" und der boolesche Wert true sehen in einer Zelle gleich aus. Wird eine CSV-Datei wieder eingelesen, muss ein Programm raten oder gesagt bekommen, welche Spalten Zahlen oder Datumswerte sind. Der LeedyBox-Konverter liest CSV-Werte als Text, daher erscheinen Zahlen aus einer CSV-Datei in JSON als Zeichenketten, sofern Sie sie nicht ändern.

Tabellenkalkulationen raten zusätzlich auf eigene Weise: Sie entfernen womöglich führende Nullen aus Postleitzahlen oder Telefonnummern, wandeln lange Zahlen in wissenschaftliche Notation um oder interpretieren Werte als Datum. Zellen, die mit =, +, - oder @ beginnen, können als Formeln behandelt werden; der Konverter bietet für die CSV-Ausgabe eine optionale Einstellung zum Schutz vor Excel-Formeln.

Kommentare und Typen in YAML

JSON kennt keine Kommentare, daher gehen sie bei der Umwandlung von YAML in JSON verloren. Eine Rückumwandlung stellt sie nicht wieder her. Bewahren Sie die ursprüngliche YAML-Datei auf, wenn die Kommentare wichtig sind.

YAML leitet Typen aus Werten ohne Anführungszeichen ab. Nach den älteren Regeln von YAML 1.1, die manche Parser verwenden, werden Wörter wie no, yes, on und off zu booleschen Werten, sodass ein Ländercode wie NO zu false werden kann. Werte wie 2026-10-02 können zu Datumsobjekten werden, und 1e3 oder 010 können als Zahlen gelesen werden. Der LeedyBox-Konverter liest YAML mit dem Core-Schema von YAML 1.2, das no und Datumsangaben als Text belässt; andere Tools, die Ihre Datei lesen, können sich jedoch anders verhalten. Werte, die Text bleiben müssen, in Anführungszeichen zu setzen, ist die sicherste Gewohnheit.

Große Zahlen in JavaScript

JavaScript speichert Zahlen als 64-Bit-Gleitkommawerte. Ganzzahlen größer als 9.007.199.254.740.991 (253 − 1) lassen sich nicht alle exakt darstellen, daher kann eine große ID wie 12345678901234567891 beim Einlesen unbemerkt gerundet werden. Das betrifft jeden browserbasierten Konverter, auch diesen, der einen Hinweis anzeigt, wenn er solche Zahlen erkennt. Datenbank-IDs und andere lange Kennungen werden sicherer als Zeichenketten gespeichert.

Das Ergebnis prüfen

Eine Umwandlung, die eine gültige Ausgabe erzeugt, ist nicht unbedingt korrekt. Bevor Sie das Ergebnis verwenden:

  • Vergleichen Sie die Anzahl der Zeilen oder Einträge mit der Quelle.
  • Prüfen Sie stichprobenartig einige Datensätze, auch solche mit leeren Werten, Sonderzeichen, Zeilenumbrüchen oder verschachtelten Daten.
  • Prüfen Sie Spalten, die im Zielsystem Zahlen, boolesche Werte oder Datumswerte sein sollen.
  • Suchen Sie nach langen Zahlen, die gerundet worden sein könnten.
  • Validieren Sie die Ausgabe mit dem Programm, das sie lesen wird – zunächst mit einer Kopie Ihrer Daten.

Mit dem Tool Textvergleich können Sie eine Originaldatei mit dem Ergebnis einer Hin- und Rückumwandlung vergleichen.

Häufige Fragen

Kann ich JSON in CSV und zurück umwandeln, ohne dass sich etwas ändert?

Nur bei einfachen, flachen Daten, und selbst dann kommen Zahlen und boolesche Werte meist als Text zurück. Verschachtelte Daten und Typen hängen von den gewählten Optionen ab, vergleichen Sie das Ergebnis daher mit dem Original.

Warum wurde mein YAML-Wert zu true oder false?

Manche YAML-Parser behandeln Wörter ohne Anführungszeichen wie yes, no, on und off als boolesche Werte. Setzen Sie den Wert in Anführungszeichen, damit er Text bleibt.

Werden meine Daten beim Umwandeln hochgeladen?

Der LeedyBox-Datenkonverter läuft in Ihrem Browser, daher werden die eingefügten Daten auf Ihrem Gerät verarbeitet.