Daten

CSV, JSON und YAML

Drei Formate tragen den Großteil der strukturierten Daten der Welt. Zwischen ihnen umzuwandeln ist einfach; es ohne stille Beschädigung zu tun, erfordert etwas Sorgfalt.

Veröffentlicht am

Wofür jedes Format gedacht ist

CSV ist eine Tabelle: Zeilen und Spalten, sonst nichts. Es ist universell lesbar, winzig klein und kann nichts Verschachteltes ausdrücken. JSON ist ein Baum – Objekte in Arrays in Objekten – und die Sprache, die fast jede Web-API spricht. YAML drückt dieselben Strukturen aus wie JSON, aber mit Einrückung statt geschweifter Klammern, was es für Menschen viel angenehmer zu lesen und zu bearbeiten macht und der Grund ist, warum Konfigurationsdateien sich zunehmend dorthin verlagert haben.

Die Falle der Typumwandlung

Das ist die Stelle, die Menschen tatsächlich Geld kostet. Eine CSV-Datei enthält nur Text – es gibt keine Möglichkeit, einen Wert als Zahl, Datum oder Zeichenkette zu kennzeichnen. Konverter raten also, und die Vermutungen sind häufig falsch:

  • Eine Postleitzahl wie 01234 wird zur Zahl 1234 und verliert die führende Null.
  • Eine Artikelnummer wie 1-2 wird zu einem Datum.
  • Eine lange Kontonummer wird zur Gleitkommazahl und verliert ihre letzten Ziffern.
  • NA, das für Nordamerika steht, wird zu „nicht verfügbar“.

Jeder dieser Fehler geschieht unbemerkt. Deshalb sollte eine sorgfältige Umwandlung von CSV in JSON jeden Wert als Zeichenkette belassen und die Entscheidung Ihnen überlassen – genau das tut der Konverter dieser Seite bewusst, auch wenn es auf den ersten Blick pedantisch wirkt.

Was die Umwandlung in CSV nicht überlebt

Verschachtelung. Ein JSON-Array flacher Objekte wird zu einer sauberen Tabelle. Sobald ein Wert selbst ein Objekt oder ein Array ist, gibt es keine Spalte mehr, in die er passt. Die Möglichkeiten sind, mit zusammengesetzten Schlüsseln abzuflachen, den verschachtelten Teil als Text in seine Zelle zurückzuschreiben oder ihn zu verwerfen – und ihn stillschweigend zu verwerfen ist die schlechteste der drei. Ihn als JSON-Text in die Zelle zu schreiben, hält die Daten wenigstens wiederherstellbar.

Die Tücken von YAML

YAML ist angenehm zu lesen und ungewöhnlich leicht falsch zu schreiben.

  • Einrückung ist Struktur, und Tabulatoren sind nicht erlaubt. Ein falsch gesetztes Leerzeichen ändert die Bedeutung, statt einen Fehler auszulösen.
  • Manche einfachen Wörter sind Wahrheitswerte. In älterem YAML werden y, n, on, off, yes und no alle als wahr oder falsch gelesen – eine Länderspalte mit NO für Norwegen wird also zu false. Setzen Sie sie in Anführungszeichen.
  • Kommentare verschwinden bei der Umwandlung in JSON, weil JSON keine Möglichkeit hat, sie darzustellen.

Der Hin- und Rückweg ist nicht garantiert

Wenn Sie JSON in YAML und zurück umwandeln, erhalten Sie meist das, womit Sie begonnen haben. Bei CSV in JSON und zurück ist das meist nicht der Fall: Anführungszeichenstil, Spaltenreihenfolge bei Datensätzen unterschiedlicher Form und die Darstellung leerer Werte sind alles Entscheidungen, und verschiedene Tools entscheiden unterschiedlich. Wenn ein Hin- und Rückweg exakt sein muss, überprüfen Sie ihn, statt es anzunehmen.

Für den Wechsel zwischen ihnen: CSV in JSON umwandeln, JSON in CSV umwandeln oder JSON in YAML umwandeln – und prüfen Sie das Ergebnis, da der Hin- und Rückweg nicht immer exakt ist.