Zum Inhalt springen

CSV in JSON umwandeln

Machen Sie aus einer CSV-Datei oder einer eingefügten Tabelle sauberes JSON – Zahlen und Boolesche Werte typisiert, verschachtelte Objekte aus Kopfzeilen mit Punkten aufgebaut und genau in der Struktur, die Ihr Code erwartet.

  • Nie gespeichert
  • Keine Warteschlange, kein Warten
  • Ohne Anmeldung, ohne Wasserzeichen

So funktioniert’s

1

CSV hinzufügen

Legen Sie eine .csv- oder .tsv-Datei ab oder fügen Sie die Daten ein. Trennzeichen und Kodierung werden automatisch erkannt.

2

Struktur wählen

Ein Array aus Objekten, ein Array aus Arrays, ein Objekt mit der ersten Spalte als Schlüssel oder JSON Lines – dazu Typen, leere Werte und Einrückung.

3

Kopieren oder herunterladen

Kopieren Sie das JSON in die Zwischenablage oder speichern Sie es als .json-Datei.

Wo CSV unschärfer ist, als es aussieht

CSV hat keinen echten Standard – es gibt eine unverbindliche Spezifikation von 2005, die beschreibt, was die meisten Tools tun, und sehr viel Software, die etwas anderes tut. Die erste Aufgabe ist also herauszufinden, was die Datei tatsächlich ist: ob die Werte durch Kommas, Semikolons oder Tabulatoren getrennt sind (europäische Gebietsschemas exportieren Semikolons, weil das Komma dort das Dezimaltrennzeichen ist), ob die erste Zeile eine Kopfzeile ist und wie mit Anführungszeichen umgegangen wird. Ein Feld in Anführungszeichen darf Kommas, Zeilenumbrüche und verdoppelte Anführungszeichen enthalten – deshalb ist das Aufteilen an Kommas der falsche Weg, eine CSV zu lesen, und deshalb beschädigt ein naiver Parser jede Datei, die eine Adresse enthält.

Die Typen sind die zweite Aufgabe, und JSON hat Ansprüche, die CSV nicht hat. Eine CSV-Zelle enthält Text und sonst nichts; JSON unterscheidet Zahlen, Strings, Boolesche Werte und null. Irgendetwas muss entscheiden, was was ist, und entscheidend sind die Fälle, die schiefgehen: Eine führende Null ist bedeutsam in einer Postleitzahl, einer Telefonnummer oder einer Kontonummer, daher muss ein Wert wie 01234 ein String bleiben, statt zur Zahl 1234 zu werden. Dasselbe gilt für lange Kennungen, die als JSON-Zahlen ab etwa neun Billiarden an Genauigkeit verlieren.

Datumswerte bleiben der Text, der sie waren, denn JSON hat keinen Datumstyp. 2024-03-05 wird als String "2024-03-05" ausgegeben, und das ist die ehrliche Antwort, keine Einschränkung – die Alternative wäre Raten, und durch Raten wird 03/05/2024 in einem Land zum März und im anderen zum Mai. Die Umwandlung ist eine Entscheidung für das, was das JSON verarbeitet, denn das kennt das gewünschte Format.

Die Kodierung ist der letzte stille Fehler. Eine CSV enthält keinen Hinweis auf ihre Zeichenkodierung, daher erzeugt eine als Windows-1252 gespeicherte und als UTF-8 gelesene Datei Zeichensalat – genau in den Zeilen mit Namen, die Akzente enthalten. Und eine Byte-Order-Mark am Anfang, die Excel hinzufügt, erscheint als verirrte Zeichen im ersten Feldnamen, wenn sie nicht behandelt wird. Beides sind Eigenschaften von CSV, nicht eines bestimmten Konverters.

Wenn Sie etwas anderes brauchen

Für Dateien, die zu groß für den Arbeitsspeicher sind, oder für alles, was per Skript laufen soll, ist csvkit genau das Richtige: csvjson --stream data.csv wandelt schrittweise um, mit csvlook sehen Sie sich zuerst an, was Sie haben, und csvclean repariert die ungleich langen Zeilen, die alles Nachfolgende aus dem Tritt bringen. Miller – mlr --icsv --ojson cat data.csv – erledigt dasselbe sehr schnell und kommt mit zeilenweisem JSON zurecht, das die meisten Datenpipelines eigentlich wollen.

Wenn die Typen wichtiger sind als die Bequemlichkeit, erledigen Sie die Umwandlung in Code, mit festgelegten statt abgeleiteten Typen. Pythons pandas mit einer expliziten dtype-Zuordnung oder ein kleines Skript mit Schema sorgt dafür, dass eine Postleitzahl eine Postleitzahl bleibt und eine Kennung jede Ziffer behält – was keine automatische Erkennung für eine Datei garantieren kann, die sie nicht vollständig gesehen hat.

Häufig gestellte Fragen

Welche JSON-Struktur soll ich wählen?

Ein Array aus Objekten – [{"name": "Ada", "age": 36}] – passt zu fast jeder API und Bibliothek. Ein Array aus Arrays ist am kompaktesten. Ein Objekt mit Schlüsseln lässt Code Datensätze per ID nachschlagen. JSON Lines schreibt einen Datensatz pro Zeile – für Streaming-Tools, BigQuery und Log-Pipelines.

Wie wird entschieden, was Zahlen und Boolesche Werte sind?

Einmal pro Spalte: Eine Spalte wird nur dann zu Zahlen, wenn jeder Wert darin eine Zahl ist, sodass „007“ und 7 nie gemischt unter einem Schlüssel landen. Werte mit führenden Nullen und IDs, die zu lang sind, als dass JavaScript sie exakt speichern könnte, bleiben Strings. true und false werden zu Booleschen Werten, und leere Zellen werden zu null – oder zu leeren Strings oder werden weggelassen, ganz wie Sie möchten.

Lässt sich verschachteltes JSON erzeugen?

Ja. Mit eingeschalteter Verschachtelung wird eine Kopfzeile wie address.city zu {"address": {"city": …}}, und tags.0, tags.1 werden zu einem Array.

Werden meine Daten irgendwo gespeichert?

Nein. Es wird nichts irgendwohin gesendet und nichts gespeichert.

Was ist mit Semikolons, Tabulatoren und anderen Kodierungen?

Kommas, Semikolons, Tabulatoren und senkrechte Striche werden automatisch erkannt, ebenso UTF-8, UTF-16 und ältere Windows-Kodierungen, sodass Text mit Akzenten und nicht-lateinischen Zeichen unversehrt ankommt.

Was ist mit doppelten oder leeren Spaltennamen?

Doppelte Namen erhalten eine Nummer (name, name_2), und leere Kopfzeilen einen Namen nach ihrer Position (column_3), sodass kein Wert überschrieben wird – und Sie erfahren, was geändert wurde.

Gut zu wissen: Datumswerte bleiben der Text aus Ihrer Datei, weil JSON keinen Datumstyp hat. Sehr große Dateien sind durch den Arbeitsspeicher Ihres Browsers begrenzt.

Dieses Tool auf Ihrer Website einbinden

Kostenlos für jeden Blog, jede Kursseite und jeden Hilfeartikel. Fügen Sie ein einziges Snippet ein, und Ihre Besucher können das Tool direkt auf Ihrer Seite nutzen.