JSON zu CSV konvertieren: ein Array von Objekten abflachen

Ein JSON-Array von Objekten wird zu einer CSV-Tabelle — eine Zeile pro Objekt, Spalten aus der Vereinigung der Schlüssel. Die eigentliche Arbeit liegt im Quoting und im Umgang mit verschachtelten Werten.

Die Form «Array von Objekten»

CSV ist eine flache Tabelle, deshalb konvertiert sich JSON sauber, wenn es ein Array von Objekten ist: jedes Objekt eine Zeile, jeder Schlüssel eine Spalte.

Den Header bauen

Nimm die Vereinigung aller Objektschlüssel als Header, nicht nur die des ersten Objekts, damit Einträge mit zusätzlichen oder fehlenden Feldern weiterhin ausgerichtet bleiben. Fehlende Zellen bleiben leer.

Quoting-Regeln

Jeder Wert mit Komma, doppeltem Anführungszeichen oder Zeilenumbruch muss in doppelte Anführungszeichen gesetzt und enthaltene Anführungszeichen verdoppelt werden, sonst verrutschen die Spalten.

Verschachtelte Werte

Objekte und Arrays haben keine flache CSV-Form: schreibe sie als JSON-Text in die Zelle (reversibel) oder flachiere sie in Spalten wie address.city.

Header-Reihenfolge und Stabilität

Sortiere die Schlüsselvereinigung oder fixiere die Reihenfolge auf die des ersten Datensatzes und hänge Extras hinten an. Eine stabile Header-Reihenfolge macht Diffs zwischen Exporten nützlich und vermeidet, dass Spalten in jedem Lauf neu sortiert werden.

Datums- und Zahlenformat

Tabellenkalkulationen interpretieren Werte aggressiv um: lange numerische IDs verlieren Präzision, ISO-Daten werden umformatiert, führende Nullen verschwinden. Wenn ein Wert exakt zurückkommen muss, setze ihn in Anführungszeichen und stelle beim Einfügen in Excel ein einfaches Anführungszeichen voran.

Excel- und Google-Sheets-Kompatibilität

Nimm CRLF-Zeilenenden und ein BOM (UTF-8 mit Byte-Order-Mark), damit Excel Unicode erkennt. Für Google Sheets ist das BOM optional, aber Kommas als Trenner und das Verdoppeln von doppelten Anführungszeichen gelten weiterhin.

Von CSV zurück zu JSON

Parse Zeilen mit einem quotenbewussten Split (kein naives Split bei Komma), nutze die erste Zeile als Spaltennamen und versuche pro Spalte Zahlen, Booleans und ISO-Daten zu casten. Der Roundtrip in diesem Tool lässt Strings als Strings, außer eine Spalte ist durchgehend numerisch.

Häufige Fallstricke

Diese Probleme zerlegen die meisten CSV-Exporte.

  • Nicht-escapete Kommas in String-Werten
  • Zeilenumbrüche in Zellen ohne umschließende Anführungszeichen
  • Gemischte Encodings (UTF-8 vs. Latin-1), die Mojibake erzeugen
  • Große Integer (IDs), die Tabellenkalkulationen stillschweigend abschneiden
  • Booleans, die als Strings "true"/"false" statt als TRUE/FALSE gespeichert werden