JSON in CSV umwandeln: Arrays von Objekten in Zeilen und Spalten überführen
Veröffentlicht am 18.6.2025 · 4 Min. Lesezeit · Entwickler-Tools
Daniel Okonkwo — Front-end-Entwickler und Tech-Redakteur bei Allin
Web-Performance · Dateiformate
Anhand von 2 Quellen geprüft
Um JSON in CSV umzuwandeln, beginne mit einem Array von Objekten. Sammle die Vereinigung aller Schlüssel für die Kopfzeile und schreibe dann eine Zeile pro Objekt, wobei du jedes Feld in der Reihenfolge der Kopfzeile ausliest. Umschließe jeden Wert, der ein Komma, ein doppeltes Anführungszeichen oder einen Zeilenumbruch enthält, mit doppelten Anführungszeichen und verdopple interne Anführungszeichen. Verschachtelte Objekte und Arrays müssen zuerst in Spalten mit Punktnotation wie address.city abgeflacht werden.
Eine praktische Anleitung, um ein JSON-Array von Objekten in eine saubere CSV-Datei zu verwandeln, samt Abflachen verschachtelter Felder und heikler Sonderfälle.
Warum die Struktur deines JSON entscheidend ist
CSV ist ein flaches, zweidimensionales Format: Zeilen und Spalten, mehr nicht. JSON ist ein Baum, der Objekte in Objekten und Arrays in Arrays verschachteln kann. Der saubere Fall für die Umwandlung ist ein Array von Objekten auf oberster Ebene, bei dem jedes Objekt zu einer Zeile und jeder Schlüssel zu einer Spalte wird. Alles Tiefere muss umgeformt werden, bevor es in ein Raster passt.
Da verschiedene Objekte verschiedene Schlüssel tragen können, sollte die Kopfzeile die Vereinigung aller gesehenen Schlüssel sein, nicht nur die des ersten Objekts. Liest du nur den ersten Datensatz, verschwinden spätere Spalten stillschweigend und die Datei gerät aus dem Takt.
Verschachtelte Objekte und Arrays abflachen
Der Standardtrick ist die Punktnotation. Ein Objekt wie {"address":{"city":"Lagos"}} wird zur Spalte address.city mit dem Wert Lagos. Die Verschachtelung darf beliebig tief sein: user.address.city ist völlig gültig. Arrays werden nach Position indiziert, sodass tags mit ["api","web"] zu zwei Spalten wird, tags.0 und tags.1.
Das Abflachen funktioniert gut, wenn Arrays kurz und von fester Länge sind. Kann ein Array wachsen, explodieren die indizierten Spalten: ein Datensatz mit fünfzig Tags erzeugt fünfzig Spalten. Dann ist es oft sauberer, das Array als einzelne verbundene Zeichenkette wie "api;web;csv" zu behalten oder die Daten in eine zweite verknüpfte Tabelle aufzuteilen.
Sonderfälle, die naive Konverter zerlegen
Der häufigste Fehler ist das Escaping. Enthält ein Wert das Trennzeichen (meist ein Komma), ein doppeltes Anführungszeichen oder einen Zeilenumbruch, muss er in doppelte Anführungszeichen gesetzt und jedes interne Anführungszeichen verdoppelt werden. So wird aus dem Wert She said "hi" der Wert "She said ""hi""". Überspringt man das, verfälscht es alle folgenden Zeilen.
Weitere Fallen: null gegenüber leerer Zeichenkette (beide erscheinen meist als leere Zelle), Booleans und Zahlen, die eine Tabellenkalkulation umdeuten kann (ein Code mit führender Null wie 007 kann seine Nullen verlieren), und die Kodierung. Schreibe stets UTF-8 und erwäge eine führende Bytereihenfolge-Markierung, falls die Datei in älteren Tabellenprogrammen sauber öffnen muss.
Häufige Fragen
- Was, wenn mein JSON ein einzelnes Objekt statt eines Arrays ist?
- Packe es in ein Array, um eine einzeilige CSV zu erhalten. Willst du jeden Schlüssel in einer eigenen Zeile, transponiere es in zwei Spalten Schlüssel,Wert.
- Welches Trennzeichen soll ich nutzen, Komma oder Semikolon?
- Das Komma ist der Standard im CSV-Standard. Manche regionalen Tabellenkalkulationen erwarten ein Semikolon; enthalten deine Werte bereits Kommas, verringert ein Semikolon oder Tabulator das Escaping.
- Wie verhindere ich, dass führende Nullen verschwinden?
- Die Nullen stehen in der CSV-Datei; die Tabellenkalkulation entfernt sie, wenn sie die Spalte als Zahl behandelt. Importiere die Spalte als Text, sonst formatiert sie das Programm beim Öffnen um.
- Kann ich die CSV verlustfrei zurück in JSON wandeln?
- Teilweise. Flache Spalten wandeln sich sauber zurück, doch Punktnotations-Schlüssel müssen neu verschachtelt werden, und CSV verliert Typinformationen, sodass Zahlen und Booleans als Zeichenketten zurückkommen, sofern du sie nicht neu parst.
Artikel, die dich interessieren könnten
Alle Ratgeber →Ähnliche Tools
Quellen
Hast du einen Fehler in diesem Artikel entdeckt?