Zum Inhalt springen
Allin

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

Daniel OkonkwoFront-end-Entwickler und Tech-Redakteur bei Allin

Web-Performance · Dateiformate

Anhand von 2 Quellen geprüft

Profil ansehen
Kurz gesagt

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.

JSON-zu-CSV-KonverterWandle ein JSON-Array von Objekten in kommagetrennte Werte mit Kopfzeile um. Nimmt eine ganze Datei, damit ein langes Log nicht über die Zwischenablage muss.Tool ausprobieren

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
ErklärungcamelCase vs. snake_case: Ein Leitfaden zu Namenskonventionen im CodecamelCase, snake_case, PascalCase und kebab-case erklärt: wie jede aussieht, wo sie Konvention ist und wie man eine konsequent wählt.ErklärungCSV zu JSON: die fünf Fälle, an denen jeder Konverter scheitertTrennzeichen in Anführungszeichen, eingebettete Zeilenumbrüche, mehrdeutige Typen, doppelte Spaltennamen und Kodierung. Jeder Fall lief durch den Konverter, und die exakte Ausgabe steht hier — auch die beiden, die er nicht rettet.ErklärungXML zu JSON: Attribute, Wiederholung und die Falle des einelementigen ArraysZwei Dokumente, die sich nur in der Zahl der Kinder unterscheiden, ergeben zwei verschiedene JSON-Formen, und ohne Schema kann kein Konverter sie auseinanderhalten. Dazu, was dieser wirklich mit Attributen, gemischtem Inhalt und Leerraum macht — und das Einzige, was er weiterhin nicht festhalten kann.VergleichJSON vs. XML: Was ist der Unterschied?JSON und XML speichern beide strukturierte Daten als Text, aber mit anderen Kompromissen. Hier steht, wie jedes aussieht, wo jedes gewinnt und wie du wählst.ErklärungJSON zu CSV bei verschachtelter Struktur: warum es keine richtige Antwort gibtDieselben zwei Bestellungen kommen aus einem Konverter mit fünf Spalten und aus einem anderen mit zehn, und keiner liegt falsch. Punktpfade, Arrays aus Skalaren, Arrays aus Objekten und Datensätze mit unterschiedlichen Schlüsseln — vier Entscheidungen, für dich getroffen, meist stillschweigend.ErklärungEinen String für JSON escapen: drei Zeichen sind Pflicht, und eines ist eine FalleRFC 8259 verlangt genau drei Dinge, die in einem JSON-String escaped werden müssen. Alles andere ist optional. Was Pipelines wirklich zerlegt, ist ein einzelnes Surrogat: in JSON-Text legal, in UTF-8 unmöglich und stillschweigend ersetzt, sobald deine Daten geschrieben werden.

Ähnliche Tools

Quellen

Hast du einen Fehler in diesem Artikel entdeckt?