Zum Inhalt springen

JSON in CSV umwandeln

Machen Sie aus API-Antworten, Exporten und JSON Lines eine CSV, die sich sauber in Excel öffnen lässt – die Datensätze werden automatisch gefunden, verschachtelte Felder in lesbare Spalten aufgelöst und große IDs Ziffer für Ziffer übernommen.

  • Nie gespeichert
  • Keine Warteschlange, kein Warten
  • Ohne Anmeldung, ohne Wasserzeichen

So funktioniert’s

1

JSON hinzufügen

Legen Sie eine .json- oder .jsonl-Datei ab oder fügen Sie das JSON direkt in das Feld ein.

2

Datensätze auswählen

Die Liste der Datensätze wird automatisch gefunden, auch tief in data.items. Legen Sie fest, wie Arrays geschrieben werden, und prüfen Sie die Vorschau.

3

Herunterladen

Eine CSV mit dem Trennzeichen und der Kodierung, die Sie brauchen – bereit für Excel, Google Sheets oder eine Datenbank.

Einen Baum in ein Raster auflösen

JSON ist ein Baum und CSV ein Rechteck, und die ganze Umwandlung dreht sich um die Frage, wie das eine zum anderen wird. Der saubere Fall ist ein Array aus Objekten, die alle dieselben Schlüssel haben – jedes Objekt ist eine Zeile, jeder Schlüssel eine Spalte, und nichts geht verloren. So sehen die meisten API-Antworten und Exporte aus, deshalb funktioniert es in der Regel einfach. Alles Schwierige kommt von Dokumenten, die nicht so aufgebaut sind.

Verschachtelte Objekte werden aufgelöst, indem ihre Schlüssel verbunden werden: Ein Adressobjekt innerhalb eines Kunden wird zu Spalten wie address.city und address.postcode – eine Konvention, mit der jede Tabellenkalkulation umgehen kann und die kein Standard festlegt. Schlüssel, die in manchen Objekten vorkommen und in anderen nicht, werden zu Spalten, die in den Zeilen ohne diesen Schlüssel leer bleiben. Das ist die richtige Antwort: Die Alternative wäre, Daten zu verwerfen, die nur manche Datensätze haben.

Bei verschachtelten Arrays kann ein Raster wirklich nicht mehr folgen. Ein Datensatz mit drei Bestellpositionen darin ist eine Zeile mit einer Liste, keine drei Zeilen – daraus drei zu machen, würde jedes andere Feld verdoppeln und still verändern, was die Daten bedeuten. Deshalb wird ein Array aus Objekten auf Zeilen verteilt, und alle anderen werden als Text in ihre Zelle geschrieben. Brauchen Sie die Bestellpositionen statt der Bestellungen, richten Sie die Umwandlung stattdessen auf dieses Array; ein Baum mit zwei Listen nebeneinander hat kein einzig richtiges Rechteck, und die Wahl ist eine Entscheidung, die nur Sie treffen können.

Zwei Details machen beim Export Ärger. Werte, die ein Komma, ein Anführungszeichen oder einen Zeilenumbruch enthalten, werden in Anführungszeichen gesetzt, damit sie erhalten bleiben – das ist korrektes CSV und sieht nur in der Rohdatei seltsam aus. Und eine lange numerische Kennung wird zur Gefahr, sobald die CSV in einer Tabellenkalkulation landet: Excel liest sie als Zahl, rundet sie ab der fünfzehnten Stelle und entfernt jede führende Null – ein Problem, das die Tabellenkalkulation verursacht, nicht die Umwandlung.

Wenn Sie etwas anderes brauchen

jq ist das richtige Tool, wenn über die Struktur entschieden statt geraten werden muss: jq -r '.orders[] | [.id, .customer.name, .total] | @csv' holt genau die gewünschten Felder aus genau der gewünschten Ebene – die Kontrolle, die ein automatisches Auflösen nicht bieten kann. Außerdem arbeitet es als Stream, sodass die Dateigröße keine Rolle mehr spielt.

Für verschachtelte Daten allgemein geben Ihnen Miller – mlr --ijson --ocsv flatten – und Pythons pandas.json_normalize ausdrückliche Kontrolle darüber, wie tief aufgelöst wird und was mit Listen geschieht. Und wenn das JSON wirklich hierarchisch statt tabellarisch ist, ist die Umwandlung in CSV womöglich ganz die falsche Idee – eine Datenbank oder eine zeilenweise JSON-Datei bewahrt die Struktur, die ein Raster verwerfen würde.

Häufig gestellte Fragen

Wie wird aus verschachteltem JSON eine Spalte?

Jedes verschachtelte Feld wird zu einer Spalte, benannt nach seinem Pfad: {"address": {"city": "Oslo"}} ergibt eine Spalte address.city. Die Spalten erscheinen in der Reihenfolge, in der sie in Ihren Daten zuerst vorkommen, nicht alphabetisch, und bei Datensätzen, denen ein Feld fehlt, bleibt diese Zelle einfach leer.

Was passiert mit Arrays?

Sie entscheiden: die Werte in einer Zelle verbinden („red; green“), auf nummerierte Spalten verteilen (tags.0, tags.1), als JSON-Text behalten oder – bei einem Array aus Objekten wie Bestellpositionen – eine Zeile pro Element schreiben, mit wiederholten übergeordneten Feldern.

Bleiben große Zahlen exakt erhalten?

Ja. IDs jenseits dessen, was JavaScript darstellen kann – Twitter-, Discord- und 64-Bit-Datenbank-IDs –, werden Ziffer für Ziffer übernommen, während die meisten Konverter 1234567890123456789 stillschweigend auf 1234567890123456800 runden.

Wird JSON Lines (NDJSON) unterstützt?

Ja. Eine Datei mit einem JSON-Objekt pro Zeile wird automatisch erkannt, und jede Zeile wird zu einer Tabellenzeile.

Was, wenn mein JSON einen Fehler hat?

Sie erhalten die genaue Zeile und Spalte mit hervorgehobener Fehlerstelle und eine verständliche Erklärung – etwa ein überzähliges Komma am Ende oder einfache Anführungszeichen, die aus JavaScript-Code kopiert wurden.

Werden meine Daten irgendwo gespeichert?

Nein. Das JSON wird hier gelesen und die CSV hier geschrieben; es wird nichts irgendwohin gesendet und nichts gespeichert.

Gut zu wissen: Es kann jeweils nur ein Array aus Objekten auf Zeilen verteilt werden; andere Arrays werden in ihre Zelle geschrieben. Sehr große Dateien sind durch den Arbeitsspeicher Ihres Browsers begrenzt.

Dieses Tool auf Ihrer Website einbinden

Kostenlos für jeden Blog, jede Kursseite und jeden Hilfeartikel. Fügen Sie ein einziges Snippet ein, und Ihre Besucher können das Tool direkt auf Ihrer Seite nutzen.