JSON-zu-CSV-Konverter

Fügen Sie JSON ein oder öffnen Sie eine Datei, um ein CSV für Excel oder Google Sheets zu erhalten, oder wechseln Sie die Richtung und machen Sie aus einem CSV JSON. Verschachtelte Objekte bekommen Punkt-Spalten, Anführungszeichen und Kommas in Werten werden richtig behandelt, und die ersten Zeilen werden als Tabelle gezeigt.

Richtung
Ein Array aus Objekten, ein Objekt, eine API-Antwort mit einem Array darin oder JSON Lines (ein Objekt pro Zeile).
Trennzeichen
Optionen

Fügen Sie JSON in das Feld ein, öffnen Sie eine Datei oder probieren Sie das Beispiel.

Sie exportieren Serverlisten, Logs oder API-Antworten in eine Tabelle? Wenn Sie den Server selbst brauchen: Heute ab 3,02 € im Monat (Auswahl: 2.226 Server).

Läuft in Ihrem Browser: Nichts, was Sie eingeben, wird irgendwohin gesendet.

So funktioniert die Umwandlung

JSON zu CSV: Jedes Objekt im Array wird zu einer Zeile. Die Spalten sind alle Schlüssel, die in irgendeinem Objekt vorkommen, in der Reihenfolge ihres ersten Auftretens; ein Objekt ohne einen Schlüssel bekommt dort einfach eine leere Zelle. Verschachtelte Objekte werden zu Punkt-Spalten wie host.name abgeflacht, und Arrays werden als JSON-Text in einer Zelle geschrieben, weil eine Liste nicht in eine einzelne Tabellenspalte passt. Zahlen bleiben genau so, wie sie geschrieben sind, lange IDs werden also nicht gerundet.

Das Quoting folgt RFC 4180, dem CSV-Standard: Ein Wert, der das Trennzeichen, ein Anführungszeichen oder einen Zeilenumbruch enthält, wird in doppelte Anführungszeichen gesetzt, und ein Anführungszeichen darin wird doppelt geschrieben. Andere Werte bleiben unverändert. Wählen Sie ein Semikolon, wenn Ihre Tabellenkalkulation für Dezimalzahlen ein Komma nutzt, wie Excel in weiten Teilen Europas.

CSV zu JSON: Der Parser liest Felder in Anführungszeichen, doppelte Anführungszeichen, Zeilenumbrüche innerhalb von Anführungszeichen und die Zeilenenden CRLF, LF oder CR. Das Trennzeichen erkennt er an den ersten Zeilen, indem er dasjenige findet, das sie in gleich viele Felder teilt. Mit Kopfzeile erhalten Sie ein Objekt pro Zeile, ohne sie ein Array pro Zeile. Die Typisierung macht aus 42, 3.5, true, false und null JSON-Werte, lässt aber 007 und sehr lange Zahlen als Text, damit Postleitzahlen und IDs erhalten bleiben.

Beispiel

Zwei Server, einer mit einem verschachtelten Objekt host und einer Portliste, der andere ohne IP-Adresse und mit einem Komma im Feld note:

servers.json
[
  { "id": 1, "host": { "name": "web-1", "ip": "203.0.113.10" }, "ports": [80, 443] },
  { "id": 2, "host": { "name": "db-1" }, "note": "primary, eu" }
]

Die Spalten sind die Vereinigung aller Schlüssel. host wird zu host.name und host.ip, das Array ports bleibt JSON-Text und steht in Anführungszeichen, weil es ein Komma enthält, die fehlende IP und die fehlenden Ports sind leere Zellen, und note steht wegen seines Kommas in Anführungszeichen:

servers.csv
id,host.name,host.ip,ports,note
1,web-1,203.0.113.10,"[80,443]",
2,db-1,,,"primary, eu"

Wandeln Sie dieses CSV mit eingeschalteter Typisierung und Verschachtelung zurück, erhalten Sie wieder die Objekte. Die id ist wieder eine Zahl und host ein Objekt, aber die Ports kommen als Text „[80,443]“ zurück und die leeren Zellen als leere Strings, weil eine CSV-Zelle nicht sagen kann, dass sie eine Liste war oder fehlte:

servers.json
[
  {"id":1,"host":{"name":"web-1","ip":"203.0.113.10"},"ports":"[80,443]","note":""},
  {"id":2,"host":{"name":"db-1","ip":""},"ports":"","note":"primary, eu"}
]

Fragen

Wie wandle ich JSON in CSV um?

Fügen Sie oben das JSON ein oder öffnen Sie eine .json-Datei, lassen Sie JSON → CSV gewählt und wählen Sie ein Trennzeichen. Das CSV erscheint sofort mit einer Tabellenvorschau; kopieren Sie es oder laden Sie es als .csv-Datei herunter und öffnen Sie es in Excel, Google Sheets oder LibreOffice. Das JSON sollte ein Array aus Objekten sein, aber auch ein einzelnes Objekt, eine API-Antwort mit einem Array darin und JSON Lines funktionieren.

Wie wandle ich CSV in JSON um?

Stellen Sie die Richtung auf CSV → JSON und fügen Sie dann das CSV ein oder öffnen Sie eine .csv-Datei. Das Trennzeichen wird für Sie erkannt. Gilt die erste Zeile als Spaltennamen, wird jede Zeile zu einem Objekt; schalten Sie das aus, erhalten Sie Arrays. Schalten Sie die Typisierung ein, um Zahlen sowie true und false statt Strings zu erhalten, und die Verschachtelung, um Spalten wie server.cpu wieder in Objekte zu verwandeln.

Was passiert mit verschachtelten JSON-Objekten und Arrays?

Verschachtelte Objekte werden zu Punkt-Spalten abgeflacht: Ein Objekt host mit einem name wird zur Spalte host.name, so tief es geht. Arrays werden als JSON-Text in einer einzelnen Zelle geschrieben, etwa [80,443], weil eine Liste in einer Zelle keinen natürlichen Platz hat. Schalten Sie das Abflachen aus, um auch verschachtelte Objekte als JSON-Text zu behalten.

Warum setzt Excel mein CSV in eine Spalte oder zerstört die Umlaute?

Excel nutzt das Listentrennzeichen Ihres Systems: Wo das Dezimalzeichen ein Komma ist, wie in Deutschland oder Frankreich, erwartet es Semikolons. Wählen Sie hier Semikolon, und die Spalten werden getrennt. Kaputte Umlaute bedeuten, dass Excel die Datei als alte Codepage statt als UTF-8 gelesen hat; setzen Sie vor dem Download den Haken bei der Byte-Order-Mark oder importieren Sie die Datei über Daten → Aus Text/CSV und wählen Sie UTF-8.

Wie wandle ich JSON auf der Kommandozeile in CSV um?

Mit jq, für ein Array flacher Objekte: jq -r '(.[0] | keys_unsorted) as $k | $k, (.[] | [.[$k[]]]) | @csv' data.json > data.csv. Die Spalten stammen nur aus dem ersten Objekt. Für CSV zu JSON braucht Python kein zusätzliches Paket: python3 -c "import csv,json,sys; print(json.dumps(list(csv.DictReader(sys.stdin))))" < data.csv.