Skip to main content

CSV to JSON Converter

Convert CSV data to JSON array format.

Geprüft von · Zuletzt geprüft

Den CSV-zu-JSON-Konverter verwenden

  1. Füge CSV in das Eingabefeld ein. Die erste Zeile muss der Header sein - Spaltennamen, die zu JSON-Objektschlüsseln werden. Ein Tabellenkalkulationskopierbereich, ein .csv-Export aus einem BI-Werkzeug oder die rohe Ausgabe von psql -c "COPY ... TO STDOUT CSV HEADER" funktionieren alle.
  2. Wähle ein Trennzeichen. Die automatische Erkennung erkennt Komma, Tabulator, Semikolon und Pipe durch Zählen der Vorkommen auf der ersten Zeile. Die manuelle Auswahl erzwingt das gewählte Zeichen.
  3. Schalte Kürzen um, um führende und nachfolgende Leerzeichen aus jedem Feld zu entfernen. Nützlich, wenn die Quelle für das menschliche Lesen nach Spalten ausgerichtet war.
  4. Klicke auf Konvertieren. Du erhältst ein JSON-Array von Objekten, eines pro Datenzeile, mit Schlüsseln, die dem Header entsprechen, und Werten als standardmäßige Zeichenfolgen.

Was der Parser tut

Der Parser implementiert eine Zustandsmaschine, die RFC 4180 spiegelt. Er verfolgt, ob er sich gerade innerhalb von zitiertem Text, einem Anführungszeichen-Escape (ein verdoppeltes "" innerhalb eines zitierten Felds repräsentiert ein wörtliches Anführungszeichen gemäß der Spezifikation) oder beim Lesen von einfachem Inhalt befindet. Trennzeichen innerhalb von zitierten Feldern werden ignoriert; Zeilenumbrüche innerhalb von zitierten Feldern werden beibehalten, sodass mehrzeilige Zellen intakt überleben. Die Header-Zeile wird zuerst erfasst, dann wird jede nachfolgende Zeile zu einem Objekt, dessen Schlüssel die Header und dessen Werte die geparsten Zellen in übereinstimmender Reihenfolge sind.

Der Konverter gibt jede Zelle als Zeichenfolge statt zu versuchen, numerische Typen zu erraten. Das ist bewusst: CSV hat kein Typsystem, und was wie eine Zahl aussieht (0123, Telefonnummern, führende Null-Postleitzahlen, ISBNs) ist sehr oft eine Zeichenfolge, deren führende Null durch einen gierigen Parser verloren gehen würde. Wenn du numerisches Casten benötigst, verarbeite das JSON mit deinem eigenen Mapping-Schritt nach, wo du weißt, welche Spalten tatsächlich Zahlen sind.

Aufgaben, für die dieses Werkzeug passt

  • Einen Tabellenkalkulationsexport in ein Node- oder Deno-Skript einlesen, das JSON.parse-fähige Daten erwartet.
  • Eine Umfrage-CSV in Datensätze für einen NoSQL-Store wie MongoDB oder DynamoDB konvertieren.
  • Test-Fixtures für Integrationstests vorbereiten, bei denen JSON einfacher in git eingecheckt werden kann als CSV.
  • Berichtsdaten in eine Chart-Bibliothek einspeisung, die Arrays von Objekten konsumiert (Chart.js, D3, ECharts).
  • Einen E-Commerce-Produktexport in eine Struktur normalisieren, die du an eine REST-API POSTen kannst.
  • Eine SELECT ... INTO OUTFILE-CSV in ein JSON-Dokument für eine Code-Überprüfung oder einen Fehlerbericht zurückziehen.

CSV-Macken und Fallstricke

  • Byte-Order-Mark. Von Excel unter Windows gespeicherte Dateien beginnen oft mit einer UTF-8-BOM (0xEF 0xBB 0xBF). Die erste Header-Zelle erscheint mit einem Fremdzeichen vorne; trimme es durch Einfügen und erneutes Einfügen des Headers oder speichere ohne BOM.
  • Eingebettete Zeilenumbrüche. Ein zitiertes Feld kann einen Zeilenumbruch enthalten, und der Parser handhabt es korrekt. Wenn jedoch ein öffnendes Anführungszeichen fehlt, verschluckt ein "Feld" den Rest der Datei. Überprüfe, ob öffnende und schließende Anführungszeichen-Zählungen übereinstimmen.
  • Anführungszeichen-Stil. RFC 4180 schreibt doppelte Anführungszeichen vor. Einfach zitierte Felder sind nicht standard und werden vom Parser nicht erkannt. Wenn deine Quelle einfache Anführungszeichen verwendet, ersetze sie zuerst.
  • Nachlaufende leere Zellen. Eine Zeile, die mit ,,, endet, erzeugt drei leere Zeichenfolge-Werte. Manche CSV-Erzeuger kürzen nachlaufende leere Zellen, erstellen kurze Zeilen; die fehlenden Spalten werden im JSON zu leeren Zeichenfolgen.
  • Gemischte Zeilenenden. Von Windows produzierte Dateien verwenden \\r\\n; Unix verwendet \\n. Der Parser toleriert beide, aber eine Mischung innerhalb einer einzelnen Datei kann in Randfällen Zeilenzahlen durcheinanderbringen.

RFC 4180 in der Praxis

CSV ist in RFC 4180 (Oktober 2005) spezifiziert, ein informativer RFC, der das Format dokumentiert statt es zu mandatieren - weshalb "CSV" in der Praxis eigentlich eine Familie verwandter Formate ist. RFC 4180 erfordert: einen Datensatz pro Zeile, Felder durch Kommas getrennt, optionale Anführungszeichen mit doppelten Anführungszeichen, verdoppelte Anführungszeichen, um ein wörtliches Anführungszeichen innerhalb eines zitierten Felds zu maskieren, und CRLF-Zeilenenden. Reale CSVs verletzen all das täglich. Tab-getrennte Werte werden manchmal CSV genannt und sind etwas sicherer, weil Tabulator-Zeichen selten in Datenfeldern erscheinen. Semikolon-getrennte CSV ist in europäischen Regionen üblich, wo das Komma der Dezimaltrenner ist. Excels CSV-Export ist besonders eigenartig - er verwendet den System-Listentrenner, der regionsabhängig ist, und zitiert manchmal Felder unnötigerweise.

Alternative Ansätze

Die Kommandozeilen-Konvertierung ist am einfachsten mit csvkit: csvjson file.csv erzeugt getypte JSON-Ausgabe. jq kann CSV mit dem @csv-Eingabe-Spec konsumieren. Pythons csv-Modul in der Standardbibliothek ist zuverlässig und bietet Typinferenz durch csv.Sniffer. Das xsv-Werkzeug, in Rust geschrieben, ist die schnellste Option für Dateien im Gigabyte-Bereich. Excel und Google Sheets können über Add-ons in JSON exportieren. Dieses In-Browser-Werkzeug ist am besten für kleine bis mittlere Dateien, bei denen du das Ergebnis sofort möchtest; für multi-gigabyte Protokolle oder Enterprise-CSVs mit nicht-standardmäßigen Eigenheiten verwende eines der Kommandozeilen-Werkzeuge oben.

Häufig gestellte Fragen

Folgt der Parser RFC 4180?

Ja, mit sinnvollen Erweiterungen für die Praxis. Anführungszeichen, doppelte Anführungszeichen innerhalb von zitierten Feldern und eingebettete Zeilenumbrüche innerhalb von zitierten Feldern verhalten sich alle gemäß der Spezifikation. Die Erweiterungen umfassen die automatische Erkennung von Tabulator-, Semikolon- und Pipe-Trennzeichen (die RFC schreibt nur Komma vor), Toleranz gegenüber sowohl <code>\\n</code> als auch <code>\\r\\n</code>-Zeilenenden (die RFC schreibt CRLF vor) und die Behandlung kurzer Zeilen als mit nachlaufenden leeren Spalten statt einem Fehler.

Warum sind numerisch aussehende Zellen im JSON noch Zeichenfolgen?

Weil CSV keine Typen hat. Eine Zelle wie <code>01234</code> könnte eine führende Null-Ganzzahl, eine Postleitzahl oder ein Telefonvorwahl sein - und sie in eine JavaScript-Zahl zu casten würde die führende Null stumm entfernen. Statt zu raten, lässt der Konverter jede Zelle als Zeichenfolge; du kannst spezifische Spalten selbst mit einem einzeiligen <code>map</code> in JavaScript casten, wenn du weißt, welche tatsächlich numerisch sind.

Wie werden zitierte Felder mit Kommas darin behandelt?

Korrekt. Die Zustandsmaschine wechselt in den "innerhalb zitierten Felds"- Modus, wenn sie ein öffnendes Anführungszeichen findet, und verlässt diesen Modus nur, wenn sie ein schließendes Anführungszeichen sieht, auf das kein weiteres Anführungszeichen folgt (doppelte Anführungszeichen bedeuten ein wörtliches Anführungszeichen). In diesem Modus werden Trennzeichen und Zeilenumbrüche als Inhalt statt als Strukturmarker behandelt. Nicht geschlossene Anführungszeichen verbreiten den Modus bis zum Ende der Eingabe, was meist als ein riesiges Feld in der Ausgabe sichtbar ist.

Kann ich tabulatorgetrennte Werte (TSV) konvertieren?

Ja. Die automatische Erkennung erkennt Tabulatoren, indem sie auf der ersten Zeile zählt - wenn Tabulatoren Kommas überwiegen, wird die Datei als TSV geparst. Du kannst auch in der Trennzeichen-Dropdown-Liste explizit Tabulator wählen, um es zu erzwingen. TSV ist generell ein sichereres Format als kommagetrennt, weil Tabulator-Zeichen fast nie in Datenfeldern vorkommen; wenn du das Format an der Quelle wählen kannst, bevorzuge TSV.

Werden meine Tabellenkalkulationsdaten an einen Server gesendet?

Nein. Der Konverter ist Preact-Code, der mit dem Seiten-Bundle geliefert wird und in deinem Browser-Tab läuft. Auf Konvertieren zu klicken ruft eine lokale Parser-Funktion auf; es gibt keine fetch-Anfrage, keine Speicherung in localStorage und keinen Hintergrund-Service-Worker, der deine Daten verarbeitet. Das ist wichtig, weil CSV-Exporte häufig personenbezogene Daten enthalten - Kundennamen, E-Mail-Adressen, Kontonummern - und dieses Werkzeug nie einen Server sieht.

Was passiert mit leeren Zeilen?

Vollständig leere Zeilen (entweder eine Leerzeile oder eine Zeile mit nur Trennzeichen) werden übersprungen statt ein Objekt mit leeren Zeichenfolge- Werten für jedes Feld zu erzeugen. Das vermeidet das Verschmutzen der Ausgabe mit Geister-Datensätzen, die reale CSVs manchmal zwischen tatsächlichen Datenzeilen ansammeln. Wenn du diese als explizite Datensätze benötigst, kannst du dich an deinen eigenen Zeilengrenzen aufteilen, bevor du einfügst.

Wie groß eine Datei kann ich einfügen?

Die Zwischenablage des Browsers kann Dutzende von Megabytes handhaben, und der Parser ist linear in der Eingabegröße. In der Praxis werden Dateien bis zu etwa fünf Megabytes in wenigen Sekunden auf einem typischen Laptop konvertiert. Größere Dateien frieren den Tab vorübergehend ein, weil das Parsen auf dem Hauptthread läuft. Für multi-gigabyte Dateien verwende <code>xsv</code> oder <code>csvkit</code> auf der Kommandozeile, wo Streaming-Parser das Laden des gesamten Dokuments in den Speicher vermeiden.

Werden doppelte Spaltennamen die Ausgabe verwirren?

Ja. JSON-Objekte können keine doppelten Schlüssel haben, sodass wenn dein Header zwei Spalten mit dem Namen <code>email</code> hat, nur die letzte pro Zeile gewinnt. Der Parser benennt sie nicht um. Wenn deine CSV tatsächlich Duplikate hat, schreibe den Header um (<code>email_privat</code>, <code>email_arbeit</code>), bevor du konvertierst. Werkzeuge wie <code>csvkit</code> melden Duplikate beim Laden als Warnungen.

Unterstützt es CSV-Dateien mit einer BOM?

Teilweise. Eine UTF-8-BOM am Anfang der Datei erscheint als unsichtbares Zeichen in der ersten Header-Zelle. Wenn nachgelagerter Code nach einem bestimmten Header-Namen sucht, schlägt die Übereinstimmung möglicherweise fehl. Die sauberste Lösung ist, ohne BOM aus Excel zu speichern oder <code>sed -i '1s/^\xef\xbb\xbf//' file.csv</code> vor dem Einfügen zu verwenden. Manche Browser entfernen die BOM beim Einfügen aus der Zwischenablage, sodass das Problem intermittierend ist.

Wie werden verschachtelte Strukturen dargestellt?

CSV ist flach. Der Konverter erzeugt ein Array flacher Objekte mit Zeichenfolge-Werten - es gibt keine Möglichkeit, "diese Zelle ist tatsächlich ein JSON-Objekt" innerhalb von CSV selbst auszudrücken. Wenn deine Daten verschachtelte Felder haben, kodiere sie als JSON-Zeichenfolgen innerhalb einer Zelle (der Konverter lässt sie als Zeichenfolgen) oder wähle ein reichhaltigeres Austauschformat wie zeilengetrenntes JSON.

Mehr Developer Tools