CSV in JSON umwandeln
CSV zu JSON parst in Ihrem Browser einen Tabellenkalkulations-Export in ein Array aus Datensätzen. Es liest RFC 4180 sauber – Felder in Anführungszeichen mit Kommas, Zeilenumbrüchen und maskierten Anführungszeichen überleben alle –, leitet skalare Typen ab und baut verschachtelte Objekte und Arrays aus Spaltennamen mit Punkten oder Klammern wieder auf.
Wie funktioniert CSV in JSON umwandeln?
Die naive Implementierung dieser Umwandlung ist eine Zeile – line.split(",") – und sie ist für einen großen Teil echter Dateien falsch. Ein CSV-Feld darf in Anführungszeichen stehen, und ein solches Feld darf das Trennzeichen enthalten, einen echten Zeilenumbruch und verdoppelte Anführungszeichen für ein einzelnes. An Kommas zu trennen macht aus "Hopper, G." zwei Felder und verschiebt jede folgende Spalte um eins – das verfälscht den Datensatz, statt an ihm zu scheitern.
Deshalb ist der Parser hier eine explizite Zustandsmaschine über den Zeichenstrom, die verfolgt, ob sie sich innerhalb eines in Anführungszeichen stehenden Bereichs befindet – genau so, wie RFC 4180 es beschreibt. Er behandelt außerdem die Dinge, die das RFC nicht erwähnt, echte Dateien aber enthalten: ein UTF-8-Byte-Order-Mark vor dem ersten Spaltennamen, CRLF und bloßes LF gemischt in einer Datei, einen abschließenden Zeilenumbruch, der sonst einen leeren Phantom-Datensatz erzeugte, und ein einzelnes Anführungszeichen mitten in einem Feld ohne Anführungszeichen, das Excel schreibt und das wörtlich genommen wird, statt es als fatal zu behandeln.
Die Trennzeichen-Erkennung zählt Kandidaten in der Kopfzeile – Komma, Semikolon, Tab, Pipe –, aber nur außerhalb der in Anführungszeichen stehenden Bereiche. Eine Datei, deren Kopfzeile name,description lautet und Semikolons innerhalb der in Anführungszeichen stehenden Beschreibungen hat, würde sonst am falschen Zeichen getrennt – die Art von Bug, die wie korrupte Daten aussieht statt wie eine falsche Einstellung.
Die Typableitung ist bewusst konservativ. Eine Zelle, die der JSON-Zahlengrammatik entspricht, wird eine Zahl, true / false werden boolesche Werte, und null wird null. Alles andere bleibt ein String – auch 007, denn die Grammatik verbietet führende Nullen, und eine Teilenummer darf nicht umnummeriert werden; auch ganze Zahlen jenseits von 2 53 , denn deren Umwandlung wirft Ziffern schlicht weg.
Schließlich werden Spaltennamen, die wie Pfade aussehen, als Pfade behandelt: customer.name baut ein verschachteltes Objekt wieder auf, tags[0] ein Array. Weil diese Namen aus der Datei stammen, sind sie nicht vertrauenswürdige Eingaben, die zum Indizieren eines Objekts benutzt werden – eine Spalte namens a.__proto__.polluted ist eine Prototype-Pollution-Nutzlast, und sie wird abgewiesen, statt ihr zu folgen.
CSV-Eingabe
id,user.name,tags[0],tags[1] 1,Ada,a,b 2,"Hopper, G.",c,
JSON-Ausgabe
[
{ "id": 1, "user": { "name": "Ada" }, "tags": ["a", "b"] },
{ "id": 2, "user": { "name": "Hopper, G." }, "tags": ["c"] }
]CSV-Eingabe → JSON-Ausgabe
CSV-Eingabe
id,name,joined 1,Ada,1815-12-10 2,Grace,1906-12-09
JSON-Ausgabe
[
{
"id": 1,
"name": "Ada",
"joined": "1815-12-10"
},
{
"id": 2,
"name": "Grace",
"joined": "1906-12-09"
}
]Welche Optionen und Sonderfälle unterstützt CSV in JSON umwandeln?
| Parameter | Typ | Standard | Verhalten & Sonderfälle |
|---|---|---|---|
| Trennzeichen | auto | , ; tab | | automatisch | Auto zählt Kandidaten in der Kopfzeile, wobei alles innerhalb von Anführungszeichen ignoriert wird. Überschreiben Sie dies, wenn die Kopfzeile einer Datei nicht repräsentativ für ihren Inhalt ist. |
| Kopfzeile | Boolesch | true | Die erste Zeile liefert die Schlüssel. Wenn sie ausgeschaltet ist, sind die Schlüssel Spalte1, Spalte2 und so weiter. Eine leere Kopfzelle fällt ebenfalls auf einenPositionsnamen zurück, sodass der Datensatz niemals einen Schlüssel vermisst. |
| Typen ableiten | Boolesch | true | Wendet die JSON-Zahlen-Grammatik plus true/false/null an. "007", "+1", "0x10" und "1,5" bleiben Zeichenketten. Schalten Sie es aus, wenn jede Spalte Text bleiben muss – eine Spalte mit vollständigen Ziffern ist der übliche Grund. |
| Pfade erweitern | Boolesch | true | Rekonstruiert die Verschachtelung aus customer.name und tags[0]. Wenn es ausgeschaltet ist, erhalten Sie ein flaches Objekt, dessen Schlüssel die wörtlichen Spaltennamen sind, was Sie wollen, wenn eine Spalte tatsächlich "user.name" heißt. |
| Leere Zellen | weglassen | behalten | weglassen | CSV kann ein fehlendes Feld nicht von einer leeren Zeichenkette unterscheiden. Weglassen ist die bessere Voreinstellung, da die Spaltensammlung eine Vereinigung ist: Ein Datensatz, der einfach tags[1] nicht hat, wird als leere Zelle geschrieben, genau wie einer, dessen tags[1] "" ist. |
| Zitierte Felder | RFC 4180 | — | Ein zitiertes Feld kann das Trennzeichen, CR, LF und doppelte Anführungszeichen enthalten. Ein nicht abgeschlossenes Anführungszeichen ist ein harter Fehler mit Zeilen- und Spaltenangabe, da stilles Abschneiden plausibles, falsches Ergebnis liefern würde. |
| Ungleiche Zeilen | Warnung | — | Eine Zeile mit der falschen Anzahl an Feldern wird beibehalten, nicht verworfen: Fehlende Felder werden weggelassen und zusätzliche ignoriert, mit einer Warnung, wie viele Zeilen betroffen waren. |
| Doppelte Spalten | Warnung | rechts gewinnt | Entspricht dem Verhalten beim Import aus Tabellenkalkulationen. Explizit darauf hingewiesen, weil das stille Verwerfen einer Spalte, die der Benutzer in der Datei sehen kann, schlimmer ist als eine entsprechende Meldung. |
Häufig gestellte Fragen
Warum wird meine Datei falsch umgewandelt, wenn ein Feld ein Komma enthält?
Sollte sie nicht – dieser Parser verfolgt Anführungszeichen sauber, "Hopper, G." bleibt also ein Feld. Trennt ein Konverter es in zwei, trennt er an Kommas ohne Rücksicht auf Anführungszeichen; das ist der mit Abstand häufigste CSV-Bug. Passiert es hier, prüfen Sie, ob das Feld in der Quelldatei wirklich in Anführungszeichen steht: Ein Komma ohne Anführungszeichen ist wirklich mehrdeutig, und kein Parser kann es retten.
Warum verschwinden die führenden Nullen in meiner ID-Spalte immer wieder?
Hier nicht – "007" bleibt ein String, denn die JSON-Zahlengrammatik verbietet führende Nullen, und genau diese Regel schützt Teilenummern, Postleitzahlen und Kontoreferenzen. Verschwinden Nullen, passiert das in der Tabellenkalkulation vor dem Export: Excel entfernt sie beim Import, sofern die Spalte nicht auf Text steht. Sollen alle Spalten als Text erhalten bleiben, schalten Sie „Typen erkennen“ aus.
Was bewirkt customer.name in einer Kopfzeile?
Es baut ein verschachteltes Objekt wieder auf: {"customer":{"name":"…"}}. Namen in Klammern wie tags[0] bauen Arrays auf. Das ist das Umgekehrte von dem, was JSON zu CSV schreibt, sodass ein Dokument den Hin- und Rückweg durch eine Tabellenkalkulation übersteht. Sind Ihre Spalten wirklich mit Punkten benannt und sollen sie wörtlich bleiben, schalten Sie „Pfade erweitern“ aus.
Kann es eine Datei mit Zeilenumbrüchen innerhalb eines Felds verarbeiten?
Ja, sofern das Feld in Anführungszeichen steht, was RFC 4180 verlangt. Eine Adresse oder ein Kommentar über mehrere Zeilen ist in Exporten üblich und wird korrekt behandelt. Nicht behandelt werden kann ein Zeilenumbruch ohne Anführungszeichen mitten im Datensatz, denn nichts unterscheidet ihn vom Ende der Zeile.
Wie große Dateien kann ich umwandeln?
Bis 8 MB. Die Umwandlung läuft im Main-Thread; über dieser Grenze wird sie mit einer Meldung abgelehnt statt versucht, denn der Versuch würde den Tab blockieren. Bei keiner Größe wird etwas hochgeladen – die Datei liest Ihr Browser, und versendet wird sie nie.
Werden meine Tabellenkalkulations-Daten an einen Server geschickt?
Nein. Das Parsen passiert in der Seite, die Sie bereits offen haben. Gerade bei diesem Tool zählt das, denn ein CSV-Export sind meist echte Datensätze – Kunden, Bestellungen, Lohnabrechnungen –, und einen davon an einen unbekannten Endpoint zu schicken, nur um ihn umzuformatieren, ist eine Offenlegung, die Sie nicht rückgängig machen können. Öffnen Sie das Netzwerk-Panel und beobachten Sie, während Sie einfügen.
Welche verwandten Tools sollten Sie als Nächstes nutzen?
- JSON in CSV umwandelnDatensätze in eine Tabelle umwandeln, Verschachtelung inklusive
- JSON zu ExcelErstellen Sie eine typisierte Excel-Arbeitsmappe, keine CSV mit neuer Endung
- JSON in String umwandelnEin Dokument zum Einbetten als String-Literal maskieren
- JSON-Escapes auflösenEin Dokument aus Maskierungen in einer Logzeile zurückholen