tooloora

CSV in JSON und zurück – im Browser

CSV in JSON umwandeln, mit Trennzeichen-Erkennung, Kopfzeilen-Erkennung und optionaler Typ-Erkennung – oder JSON zurück in CSV. Nichts wird hochgeladen.

Läuft lokal — nichts wird hochgeladen

Alles läuft in deinem Browser – kein Upload, keine Speicherung.

CSV in JSON umwandeln – und wieder zurück

Füge eine CSV-Tabelle ein und erhalte sofort JSON: Das Trennzeichen wird erkannt, die Kopfzeile ebenfalls, Zahlen und Wahrheitswerte werden auf Wunsch typisiert. Der Rückweg flacht verschachtelte Objekte in Punkt-Notation ab. Eine Tabellen-Vorschau und eine Fehlerliste je Zeile zeigen sofort, wo eine Datei hakt. Alles läuft in deinem Browser, ohne Upload und ohne Anmeldung.

Was ist eigentlich eine gültige CSV-Datei?

Der Referenztext ist RFC 4180 aus dem Oktober 2005, betitelt „Common Format and MIME Type for Comma-Separated Values (CSV) Files". Er beschreibt einen erstaunlich kleinen Kern: Felder werden durch Kommas getrennt, Zeilen durch CRLF beendet, Felder mit Komma, Anführungszeichen oder Zeilenumbruch stehen in doppelten Anführungszeichen, und ein Anführungszeichen im Feld wird verdoppelt.

Der Standard hält selbst fest, dass es keine formale Spezifikation gibt, an die sich alle halten – und genau das merkt man in der Praxis: Deutsche Excel-Versionen schreiben Semikolons, weil das Komma als Dezimaltrenner belegt ist. Exportwerkzeuge nutzen Tabulatoren. Manche Systeme setzen jedes Feld in Anführungszeichen, andere keines. Deshalb rät dieses Werkzeug das Trennzeichen, statt eines vorzuschreiben, und lässt dich die Entscheidung überschreiben.

Wie wird das Trennzeichen erkannt?

Gezählt wird in den ersten 20 nicht-leeren Zeilen, wie oft Komma, Semikolon, Tabulator und senkrechter Strich außerhalb von Anführungszeichen vorkommen. Gewonnen hat das Zeichen, dessen Anzahl in möglichst vielen Zeilen identisch ist. Konsistenz schlägt also Häufigkeit: Eine Semikolon-Datei mit Kommas in Adressfeldern wird korrekt erkannt, weil die Kommazahl von Zeile zu Zeile schwankt, die Semikolonzahl aber nicht.

Warum bleiben Postleitzahlen Text?

Weil aus 01067 sonst 1067 würde. Die Typ-Erkennung wandelt bewusst nur um, was exakt dem JSON-Zahlenformat entspricht:

  • 42, -3.5, 1e3 werden Zahlen
  • 01067, +5, 1.234,00, 0049 30 123456 bleiben Text
  • true und false (Groß-/Kleinschreibung egal) werden Booleans
  • leere Felder und null werden null

Das ist die konservative Auslegung: Lieber ein Wert zu wenig konvertiert als eine Artikelnummer, IBAN oder Telefonnummer zerstört. Wer alles als Text will, schaltet die Typ-Erkennung einfach aus.

Wie werden verschachtelte Objekte zu Spalten?

CSV kennt nur flache Tabellen, JSON nicht. Beim Weg von JSON nach CSV gilt daher die Punkt-Notation:

JSONCSV-Spalte
{"adresse": {"stadt": "Berlin"}}adresse.stadt
{"tags": ["neu", "premium"]}tags.0, tags.1 (oder eine Spalte mit ; getrennt)
{"notiz": null}leere Zelle

Die Spaltenreihenfolge folgt dem ersten Auftreten, fehlende Schlüssel werden zu leeren Zellen. Ein Punkt im Schlüsselnamen selbst erzeugt einen mehrdeutigen Spaltennamen – das ist der bekannte Preis dieser Notation und lässt sich nicht sauber auflösen.

Ehrliche Grenzen

Alles läuft in einem einzigen Browser-Tab. Ab wenigen Megabyte wird das Tippen träge, ab rund 20 Millionen Zeichen lehnt das Werkzeug die Verarbeitung ab, damit der Tab nicht einfriert. Die Trennzeichen-Schätzung arbeitet zeilenweise und kann bei sehr vielen Zeilenumbrüchen innerhalb von Feldern danebenliegen – dann stellst du das Trennzeichen von Hand ein. Für Exporte im Gigabyte-Bereich sind csvkit, jq oder ein Skript die richtigen Werkzeuge, nicht ein Browser-Tab.

Häufige Fragen

Wird meine Datei auf einen Server hochgeladen?

Nein. Parsen und Umwandeln laufen vollständig in deinem Browser, die Seite funktioniert nach dem Laden auch offline. Das ist hier besonders wichtig: CSV-Exporte sind meist Kundenlisten, Bestelldaten oder Lohnauszüge, und viele Online-Konverter schicken jedes eingefügte Byte an ihr Backend. Dieses Werkzeug hat gar keine Upload-Schnittstelle.

Wie erkennt das Tool das Trennzeichen?

Es zählt Komma, Semikolon, Tabulator und senkrechten Strich außerhalb von Anführungszeichen in den ersten 20 nicht-leeren Zeilen und nimmt das Zeichen, das in möglichst vielen Zeilen gleich oft vorkommt. Konsistenz schlägt Häufigkeit, deshalb wird eine Semikolon-Datei mit Kommas in Freitextfeldern trotzdem richtig erkannt. Die Wahl lässt sich jederzeit überschreiben.

Warum bleibt meine Postleitzahl 01067 Text, obwohl Typ-Erkennung an ist?

Weil aus ihr sonst die Zahl 1067 würde, die führende Null wäre weg. Die Typ-Erkennung wandelt nur Werte um, die exakt dem JSON-Zahlenformat entsprechen: 42 und -3.5 werden Zahlen, 01067, +5 und 1.234,00 bleiben Text. true und false werden Booleans, leere Felder werden null.

Was passiert beim Weg von JSON nach CSV mit verschachtelten Objekten?

Sie werden in Punkt-Notation flach gemacht: Aus {"adresse":{"stadt":"Berlin"}} wird die Spalte adresse.stadt. Arrays bekommen entweder je Element eine Spalte (tags.0, tags.1) oder werden in einer Spalte zusammengefasst, das entscheidest du. Leere Objekte, leere Arrays und null werden zu leeren Zellen.

Gibt es eine Größen-Grenze?

Ja, eine ehrliche. Alles läuft in einem Browser-Tab: Ab wenigen Megabyte wird die Seite träge, oberhalb von rund 20 Millionen Zeichen verarbeitet das Werkzeug gar nicht mehr. Für Exporte im Gigabyte-Bereich sind Kommandozeilen-Werkzeuge wie csvkit oder jq die bessere Wahl.