HandyTools Hub

JSON-zu-CSV-Konverter

Konvertieren Sie JSON-Arrays sofort in das CSV-Format

APIs und Konfigurationsdateien sprechen JSON; Tabellenkalkulationen, Datenbankimporte und die meisten Reporting-Werkzeuge sprechen CSV. Dieser Konverter schlägt die Brücke: Fügen Sie ein JSON-Array von Objekten ein, und er erzeugt eine abgeflachte, korrekt maskierte Tabelle mit Kopfzeile. Verschachtelte Objekte werden zu Punktnotationsspalten, Werte mit Kommas oder Anführungszeichen werden richtig eingefasst, und das Ergebnis öffnet sich sauber in Excel, Google Sheets oder einem Importskript.

Verwendung

  1. Fügen Sie ein JSON-Array von Objekten in das Eingabefeld ein, oder klicken Sie auf die Beispielschaltfläche, um ein dreizeiliges Beispiel zu laden.
  2. Konvertieren drücken. Das Fehlerfenster erscheint, wenn das JSON fehlerhaft oder kein Array ist; andernfalls füllt sich die Ausgabe.
  3. Die Statistiken prüfen. Eine Zeilen- und Spaltenzahl wird angezeigt, zusammen mit einem Chip für jeden Spaltennamen.
  4. Die CSV kopieren Sie mit der Kopier-Schaltfläche und fügen Sie sie in eine Tabellenkalkulation oder eine .csv-Datei ein.

Was der Konverter akzeptiert

Die oberste Ebene muss ein Array sein. Jedes Element sollte ein Objekt sein; ist ein Element ein Primitiv — ein String oder eine Zahl —, trägt es eine leere Zeile und keine Spalten bei. Ein leeres Array ist ein gültiges JSON-Dokument, erzeugt aber die Meldung „Input array is empty“, weil keine Kopfzeile aufgebaut werden kann. Fehlerhaftes JSON wird mit dem Fehlertext des Parsers gemeldet. Der Konverter errät niemals ein Wrapper-Objekt, also muss {"data": [...]} zuerst ausgepackt werden.

Werte behalten ihre JSON-Typen bis zu dem Moment, in dem sie geschrieben werden. Eine Zahl wird mit der Standard-Zahl-zu-String-Konvertierung von JavaScript serialisiert, sodass sehr große ganze Zahlen vor Erreichen der CSV an Präzision verlieren können — eine 20-stellige ID kann gerundet oder in Exponentialnotation herauskommen. Datumsangaben kommen als Strings an und laufen unverändert durch, die Spalte enthält also das ISO-Format, das die API verwendet hat. Wenn eines davon wichtig ist, wandeln Sie den Wert im Quell-JSON zuerst in einen String um. Tief verschachtelte Objekte sind kein Problem; jede zusätzliche Ebene verlängert einfach den punktierten Schlüssel.

Praxisbeispiel: verschachtelte API-Daten

Eingabe:

[
  { "id": 1, "name": "Alice", "address": { "city": "Austin", "zip": "78701" } },
  { "id": 2, "name": "Bob", "address": { "city": "Denver" }, "tags": ["admin", "beta"] }
]

Die erste Zeile flacht zu id, name, address.city und address.zip ab. Die zweite hat kein address.zip, fügt aber tags hinzu. Die Spalten erscheinen daher in der Reihenfolge id, name, address.city, address.zip, tags, und die Ausgabe lautet:

id,name,address.city,address.zip,tags
1,Alice,Austin,78701,
2,Bob,Denver,,"admin,beta"

Beachten Sie die abschließende leere Zelle für Alices fehlende Tags und das in Anführungszeichen gesetzte "admin,beta", weil das verbundene Array ein Komma enthält.

Wie Abflachung und Escaping funktionieren

Die Abflachung rekursiert nur in einfache Objekte. Jede verschachtelte Ebene hängt ihren Schlüssel mit einem Punkt an den übergeordneten an, sodass user.contact.email drei Ebenen erfasst. Arrays werden als Blattwerte behandelt. Das Escaping folgt RFC 4180: Ein Feld wird in doppelte Anführungszeichen gesetzt, wenn es ein Komma, ein doppeltes Anführungszeichen, einen Wagenrücklauf oder einen Zeilenumbruch enthält, und jedes interne doppelte Anführungszeichen wird verdoppelt. Der Wert He said "hi" wird in der Ausgabe also zu "He said ""hi""". Felder, die nichts davon brauchen, werden blank geschrieben.

Die Kopfzeile wird mit genau derselben Funktion maskiert wie die Daten, was zählt, wenn ein Schlüssel selbst ein Komma oder ein Anführungszeichen enthält — bei APIs selten, bei benutzergenerierten Feldnamen aber möglich. Spalten werden über ihren abgeflachten Pfad verschlüsselt, sodass zwei Quellobjekte, die beide address.city enthalten, zu einer Spalte verschmelzen, auch wenn die Objekte ansonsten nichts miteinander zu tun haben. Da die Vereinigung aus jeder Zeile berechnet wird, bevor Daten geschrieben werden, wird ein Schlüssel, der nur im allerletzten Datensatz vorkommt, trotzdem zu einer Spalte, und er steht am Ende der Liste, wenn er sonst nirgends auftaucht.

Häufige Fehler und Korrekturen

  • Ein Wrapper-Objekt übergeben. Packen Sie { "results": [...] } vor dem Konvertieren zum reinen Array aus.
  • Erwarten, dass Arrays zu Spalten expandieren. Sie fallen zu einem kommagetrennten String zusammen; verarbeiten Sie Array-Felder vorher in benannte Spalten, wenn Sie jedes Element getrennt brauchen.
  • Einen Datensatz das Schema aufblähen lassen. Eine einzelne Zeile mit einem zusätzlichen verschachtelten Feld fügt eine Spalte hinzu, die für jede andere Zeile leer ist.
  • Die JSON-vs-CSV-Null-Falle vergessen. Fehlende Schlüssel, null und leere Strings werden alle als leere Zellen dargestellt, sodass nachgelagerte Logik sie nicht unterscheiden kann.
  • Die Kopie mit Excels Standard-Doppelklick öffnen. Nutzen Sie bei Dateien mit Nicht-ASCII-Text Daten → Aus Text/CSV, um UTF-8 wählen und verstümmelte Zeichen vermeiden zu können.
  • Annehmen, dass Zahlen unversehrt bleiben. Große IDs können durch JavaScripts Zahlenbehandlung gerundet werden; setzen Sie sie im Quell-JSON in Anführungszeichen, um sie exakt zu halten.
  • Ein UTF-8-Byte-Order-Mark erwarten. Die Ausgabe hat keines, was für Code und Datenbanken meist richtig ist, Excel bei Nicht-ASCII-Text aber fehlinterpretieren kann, wenn Sie nicht über den Text/CSV-Dialog importieren.

Wann CSV das falsche Ziel ist

CSV ist eine flache Tabelle und kann Rekursion oder wiederkehrende Gruppen nicht ohne Duplikation darstellen. Wenn Ihr JSON tief verschachtelt ist oder Arrays unterschiedlicher Länge enthält, verliert eine Tabellenkalkulation entweder Struktur oder wird unlesbar. Behalten Sie die Daten in solchen Fällen in JSON, laden Sie sie in eine Datenbank, oder flachen Sie nur die Felder ab, die Sie tatsächlich brauchen, in getrennte Tabellen. CSV ist die richtige Wahl, wenn jeder Datensatz ungefähr dieselbe flache Form hat und ein Mensch oder eine Tabellenkalkulation ihn liest.

Ein praktischer Mittelweg ist, zwei zusammengehörige CSVs auszugeben — eine für übergeordnete Datensätze und eine für die verschachtelte Sammlung —, die sich eine ID-Spalte teilen, und sie dann in der Tabellenkalkulation oder Datenbank zu verbinden. Das bewahrt die wiederkehrende Struktur, die eine einzelne flache Tabelle sonst bis zur Unkenntlichkeit plattmacht. Wenn Sie nur eine schnelle, menschenlesbare Ansicht einer verschachtelten API-Antwort brauchen, dient Ihnen ein JSON-Formatierer oder -Viewer besser als jede CSV.

Verwandte Tools

Häufig gestellte Fragen

Warum schlägt meine Konvertierung mit einem Nicht-Array-Fehler fehl?

Die Eingabe muss ein JSON-Array von Objekten sein, und eine sehr häufige Form aus APIs ist ein Wrapper-Objekt wie {"results": [...]}. Der Konverter lehnt das ab, weil die oberste Ebene kein Array ist. Packen Sie es zuerst aus — kopieren Sie entweder nur das innere Array heraus oder lassen Sie es durch einen JSON-Formatierer laufen, um das Array freizulegen, und fügen Sie das dann ein.

Wie werden Arrays innerhalb einer Zeile behandelt?

Verschachtelte Objekte werden rekursiv mit Punktnotation abgeflacht, Arrays bleiben jedoch einzelne Werte. Ein Array wie ["admin", "beta"] wird vom CSV-Escaper als admin,beta stringifiziert, und weil es ein Komma enthält, wird die ganze Zelle in Anführungszeichen gesetzt: "admin,beta". Ein Array aus Objekten stringifiziert zu dem nutzlosen [object Object], also flachen Sie solche Felder vorher ab oder verbinden Sie sie.

Was passiert, wenn Zeilen unterschiedliche Schlüssel haben?

Der Konverter sammelt jeden eindeutigen Schlüssel über alle Zeilen hinweg in der Reihenfolge seines ersten Auftretens, und diese Vereinigung wird die Kopfzeile. Eine Zeile, der ein Schlüssel fehlt, erhält eine leere Zelle in dieser Spalte. Das macht optionale Felder leicht handhabbar, bedeutet aber auch, dass ein einzelner verirrter Schlüssel in einem Datensatz dem ganzen Blatt eine überwiegend leere Spalte hinzufügt.

Werden null-, fehlende und boolesche Werte unterschiedlich geschrieben?

Ja. null und undefined werden zu leeren Zellen. Zahlen und boolesche Werte werden als ihr wörtlicher Text geschrieben, true bleibt also true und 42 bleibt 42. Ein leerer String wird ebenfalls zu einer leeren Zelle, was bedeutet, dass ein vorhandener, aber leerer Wert und ein fehlender Wert in der CSV identisch aussehen — etwas, das Sie beachten sollten, wenn die Unterscheidung nachgelagert zählt.

Kann ich eine .csv-Datei herunterladen oder nur den Text kopieren?

Dieses Tool bietet eine Kopier-Schaltfläche für die erzeugte CSV; eine Datei-Download-Steuerung enthält es nicht. Fügen Sie das Ergebnis in eine leere Textdatei mit der Endung .csv ein oder direkt in eine Tabellenzelle und nutzen Sie dort den Text-in-Spalten-Import. Die Ausgabe ist standardmäßiger kommagetrennter Text mit einer Kopfzeile.

Sortiert oder ordnet der Konverter meine Spalten neu?

Nein. Die Spaltenreihenfolge folgt dem ersten Auftreten über das Array von Objekten hinweg, und die Zeilenreihenfolge bleibt genau wie in der Eingabe erhalten. Wenn Sie alphabetische Kopfzeilen oder nach einem Feld sortierte Zeilen brauchen, sortieren Sie das JSON vor dem Konvertieren, statt zu erwarten, dass der Konverter das übernimmt.

Geprüft vom HandyTools-Hub-Team · Zuletzt aktualisiert