Eine CSV-Datei in JSON umwandeln
Wandelt einen CSV-Export im Browser in JSON um und beachtet dabei die Anführungsregeln echter Tabellenprogramme. Kommas, Anführungszeichen und Zeilenumbrüche innerhalb einer Zelle bleiben erhalten; die Datei wird nie gesendet.
Geeignet für übliche Tabellenexporte. Die Datei wird nur in diesem Tab gelesen und nirgendshin gesendet.
So funktioniert es
CSV ist eine Folge von Feldern, nicht bloß Text mit Kommas
Ein einfaches Aufteilen jeder Zeile am Komma scheitert schon an einem Firmennamen wie „Beispiel, GmbH“. Tabellenprogramme setzen solche Zellen in Anführungszeichen. Innerhalb dieser Anführungszeichen dürfen auch echte Zeilenumbrüche und weitere Trennzeichen stehen.
Der Parser läuft deshalb durch jedes Zeichen und hält einen kleinen Zustand: innerhalb oder außerhalb eines quotierten Feldes. Zwei Anführungszeichen hintereinander ergeben ein wörtliches Anführungszeichen. Erst ein Trennzeichen außerhalb des Feldes beginnt die nächste Spalte.
Objekte oder Arrays
Mit einer Kopfzeile kann jede Datenzeile zu einem Objekt werden:
[
{ "name": "Ada", "stadt": "Berlin" }
]
Ohne Kopfzeile oder in der Array-Einstellung bleibt die ursprüngliche Spaltenreihenfolge erhalten. Das Werkzeug erfindet keine Datentypen und verändert daher weder führende Nullen noch Schreibweisen von Dezimalzahlen.
Umgang mit ungleich breiten Zeilen
Kurze Zeilen werden mit leeren Werten aufgefüllt. Doppelte oder leere Überschriften erhalten eindeutige positionsbezogene Namen. Damit geht keine Spalte still verloren und die Ausrichtung nachfolgender Werte bleibt stabil.
Grenzen
Die Konvertierung ist ein Formatwechsel, keine Datenbereinigung. Datumswerte, Zahlen und boolesche Wörter bleiben Text. Eine Datei in einer alten Codepage kann ohne zuverlässige Zeichensatzangabe nicht sicher erraten werden; für verlustfreie Umlaute sollte der Export als UTF-8 gespeichert sein.
So wird es gemacht
- Lies die ausgewählte Datei in diesem Tab als UTF-8 und entferne eine vorhandene UTF-8-Byte-Order-Mark.
- Ermittle das Trennzeichen aus Kommas, Semikolons, Tabulatoren und Pipes in der ersten Zeile außerhalb von Anführungszeichen oder verwende die manuelle Auswahl.
- Laufe Zeichen für Zeichen durch den Text und merke, ob sich der Parser in einem quotierten Feld befindet. Trennzeichen und Zeilenumbrüche darin gehören weiter zur Zelle.
- Behandle zwei aufeinanderfolgende Anführungszeichen in einem quotierten Feld als ein wörtliches Zeichen, wie in RFC 4180 beschrieben.
- Verwende auf Wunsch die erste Zeile als Objektschlüssel. Fülle kurze Zeilen auf und benenne leere oder doppelte Überschriften nach ihrer Position, damit keine Spalte verschwindet.
- Serialisiere das Ergebnis mit zwei Leerzeichen Einzug als JSON und biete die vollständige Datei zum Download an.
Wovon es ausgeht
- Jeder CSV-Wert wird als Zeichenkette ausgegeben. CSV besitzt keine Typen; eine automatische Zahlenerkennung würde führende Nullen und Versionsnummern unwiederbringlich verändern.
- Die gesamte Datei wird auf einmal in den Arbeitsspeicher gelesen und ist deshalb auf 20 MB begrenzt.
- Die Datei wird als UTF-8 decodiert. Bei älteren Windows-Codepages können nicht darstellbare Zeichen als Ersatzzeichen erscheinen.
- Die automatische Erkennung betrachtet die erste logische Zeile. Bei ungewöhnlichen Dateien kann das Trennzeichen manuell gewählt werden.
Fragen
Wird meine CSV-Datei hochgeladen?
Nein. Ein Worker dieses Browser-Tabs liest und konvertiert die Datei auf Ihrem Gerät. Der Seitentest schlägt fehl, falls bei der Nutzung eine Dateianfrage an einen fremden Server gesendet wird.
Warum werden Zahlen als Zeichenketten ausgegeben?
CSV enthält keine Typinformation. Ein Wert wie 007 kann eine Artikelnummer sein, 1.10 eine Version und eine lange Ziffernfolge eine Telefonnummer. Erst das Zielsystem kennt die Bedeutung und sollte den Typ festlegen.
Funktionieren CSV-Dateien mit Semikolon?
Ja. Deutschsprachige Tabellenprogramme verwenden oft Semikolons, weil das Komma als Dezimalzeichen dient. Die Datei wird automatisch geprüft und die Auswahl kann unter den weiteren Optionen überschrieben werden.
Was geschieht mit einem Zeilenumbruch innerhalb einer Zelle?
Er bleibt erhalten, wenn die Zelle in Anführungszeichen steht. Der Parser verfolgt den Quote-Zustand und beendet eine Zeile erst außerhalb eines solchen Feldes.