TSV in JSON umwandeln

TSV kannst du hier kostenlos und ohne Konto in JSON umwandeln: Datei oben ablegen, und ein, zwei Sekunden später steht das Ergebnis zum Herunterladen bereit. Die Umwandlung läuft in deinem eigenen Browser, die Datei wird also nie hochgeladen — das klappt unter Windows, macOS und Linux ebenso wie auf iPhone und Android, und es funktioniert selbst dann noch, wenn du das Netz abschaltest.

  • Wo es läuft In deinem Browser. Die Datei wird nicht hochgeladen.
  • Verlustfrei Es geht nichts verloren. JSON enthält genau das, was auch TSV enthielt.
  • Größenbegrenzung Bis 100 MB pro Datei, kostenlos und ohne Konto.

Bis zu 100 Dateien auf einmal. Gemischte Formate sind kein Problem.

Warum die Tabelle mit Tabs statt mit Kommas kommt

Wer eine Tabelle aus GENESIS-Online, der Datenbank des Statistischen Bundesamts, oder aus einem Landesamt für Statistik herunterlädt, bekommt oft eine tabgetrennte Datei angeboten, gerade weil Ortsnamen, Berufsbezeichnungen und Kategorien voller Kommas und Punkte stecken, die eine kommagetrennte Datei stören würden.

Für ein Skript oder ein Auswertungstool ist die Datei in dieser Form trotzdem unhandlich: Es gibt keine Typen, keine Verschachtelung, und ein Tabulator innerhalb eines Wertes lässt sich mit den Mitteln der Datei selbst nicht sicher unterscheiden von einem Spaltenumbruch.

Was aus der Tabelle wird: ein Array aus Objekten

Die Kopfzeile liefert die Schlüssel, jede weitere Zeile wird zu einem Objekt. Am Ende steht ein JSON-Array — genau die Form, die ein Skript, ein Notebook oder eine fetch-Abfrage in JavaScript erwartet, wenn von „den Daten" die Rede ist.

Es wird nichts um das Array herum verpackt und keine Spalte automatisch als Schlüssel für ein Lookup-Objekt verwendet, weil das voraussetzen würde zu wissen, welche Spalte die eindeutige Kennung ist — das kann die Umwandlung nicht entscheiden, das muss beim Weiterverarbeiten passieren.

Tabs und Zeilenumbrüche in einem Wert werden entschärft

Eine tabgetrennte Datei hat keine anerkannte Möglichkeit, einen Tabulator innerhalb eines Feldes zu kennzeichnen, und ein Zeilenumbruch mitten in einem Wert ist noch problematischer: Die Zeile endet dort, wo der Wert eigentlich weiterlaufen sollte. Beides kommt in der Praxis vor, meist in einer Anmerkungs- oder Beschreibungsspalte.

In JSON sind das gewöhnliche Zeichen: Ein Tabulator wird als \t innerhalb der Zeichenkette geschrieben, ein Zeilenumbruch als \n, und keines von beiden kann die Struktur des Dokuments durcheinanderbringen, weil diese Struktur über geschweifte und eckige Klammern ausgedrückt wird und nicht über die Zeichen in den Daten selbst.

Spaltenüberschriften werden zu Schlüsseln, genau wie geschrieben

Eine Überschrift wie „Kreis" wird zum Schlüssel „Kreis", eine Überschrift wie „Bevölkerung (in 1.000)" behält ihre Klammern. Nichts wird umbenannt oder in ein Programmierschema übersetzt, weil eine Umwandlung, die eigenmächtig Spaltennamen ändert, das Ergebnis nicht mehr mit der Quelle vergleichbar machen würde.

Das hat Folgen bei der Weiterverarbeitung: `zeile.Bevölkerung (in 1.000)` ist in den meisten Sprachen keine gültige Schreibweise, `zeile["Bevölkerung (in 1.000)"]` schon. Wer die Schlüssel bereinigen will, macht das einmal in der Kopfzeile vor der Umwandlung oder einmal danach im JSON, statt sich mit der Originalschreibweise durch den ganzen Code zu arbeiten.

Was aus einem amtlichen Kennzeichen wird, wenn es wie eine Zahl aussieht

JSON unterscheidet zwischen 7 und "7", eine tabgetrennte Datei nicht, also wird geraten: Werte, die wie Zahlen aussehen, werden zu JSON-Zahlen, true und false zu Booleans, alles andere bleibt Zeichenkette. Für Einwohnerzahlen oder Prozentwerte ist das genau richtig.

Für einen amtlichen Gemeindeschlüssel ist es das nicht. Eine achtstellige Kennziffer, die mit einer 0 beginnt, wird als Zahl ohne die führende 0 gelesen, und danach lässt sich die ursprüngliche Schreibweise nicht mehr rekonstruieren. Solche Spalten lohnt es sich im Ergebnis zu prüfen, bevor sie irgendwo als Schlüssel dienen.

Leere Zellen werden zu null, nicht zu leeren Zeichenketten

Eine leere Zelle zwischen zwei Tabulatoren wird als `null` geschrieben. Das ist eine bewusste Entscheidung, denn ein Konsument des JSON behandelt null und "" unterschiedlich — eine Schema-Prüfung, die eine Zeichenkette erwartet, weist null zurück, auch wenn beide in einer einfachen Wahrheitsprüfung als „nichts" durchgehen.

Die Quelltabelle kann nicht sagen, ob eine Zelle bewusst leer gelassen wurde oder ob der Wert schlicht fehlt — eine tabgetrennte Datei hat für beide Fälle nur die eine leere Stelle. Wenn dieser Unterschied wichtig ist, muss er schon in der Ausgangsdatei stehen, etwa als eigene Markierung.

Zeilen mit mehr Feldern als die Kopfzeile

Die Schlüssel kommen aus der Kopfzeile, und jede spätere Zeile wird an ihr gemessen. Taucht in einer Tabellenerweiterung plötzlich eine zusätzliche Spalte auf, ohne dass die Kopfzeile angepasst wurde, bekommt diese Spalte keinen eigenen Schlüssel.

Die überzähligen Werte landen stattdessen gesammelt unter dem Schlüssel `__parsed_extra`, als Array, nur bei den betroffenen Zeilen. Das macht eine unregelmäßige Tabelle sichtbar, statt sie stillschweigend falsch zuzuordnen — ein Blick mit `jq` auf ein paar Zeilen zeigt sofort, ob das Feld vorkommt.

Wie viel größer das JSON gegenüber der Tabelle wird

Jede Zeile wiederholt jeden Schlüssel, jede Zeichenkette bekommt Anführungszeichen, dazu kommt die Interpunktion des Objekts. Bei einer breiten Tabelle mit langen Spaltenüberschriften und kurzen Werten kann das JSON ein Vielfaches der Ausgangsdatei ausmachen.

Das ist ein fairer Preis für eine Datei, mit der weitergerechnet wird, und ein schlechter für eine Datei, die nur archiviert werden soll. Die Ausgabe ist zusätzlich mit zwei Leerzeichen eingerückt, was sie im Editor lesbar macht und ebenfalls Bytes kostet — für Speicherung oder einen Datenstrom ist NDJSON die kompaktere Alternative.

Das Ergebnis mit jq durchsehen

`jq "length"` liefert die Zeilenzahl, ohne dass die Kopfzeile mitzählt. `jq ".[0] | keys"` zeigt die Spalten so, wie der Parser sie gelesen hat. `jq "[.[].Bundesland] | unique"` zeigt jeden vorkommenden Wert einer Spalte — nützlich, um herauszufinden, welche Schreibweise eine Statistikbehörde für „keine Angabe" verwendet hat.

Das ist gerade bei amtlichen Tabellen eine schnellere Methode als das Öffnen der Datei in einer Tabellenkalkulation, die auf dem Weg wiederum ihre eigenen, oft unbemerkten Umwandlungen vornimmt — etwa an genau den Gemeindeschlüsseln, die vorher schon Zahlen wurden.

Wo die Umwandlung läuft und was sie begrenzt

Sowohl das Lesen der tabgetrennten Datei als auch das Schreiben des JSON laufen als gewöhnliches JavaScript auf dieser Seite, es wird also nichts hochgeladen. Das ist bei einer noch unveröffentlichten Auswertung oder einem Datenauszug mit eingeschränkter Weitergabe kein Nebenpunkt.

Das Array wird vollständig im Arbeitsspeicher aufgebaut, bevor es geschrieben wird — mehrere Dutzend Megabyte sind unproblematisch, bei einigen Hundert wird ein Browser-Tab spürbar langsamer. Für eine so große Tabelle ist NDJSON die Form, die diese Grenze nicht kennt, und sie entsteht aus derselben Quelle.

TSV in JSON umwandeln — so geht es

  1. Leg deine TSV-Datei auf dieser Seite ab, oder klick, um eine auszuwählen.
  2. Wähl JSON als Ziel. Die Umwandlung läuft in deinem Browser, die Datei wird nicht hochgeladen.
  3. Lade die fertige JSON-Datei herunter.

TSV und JSON im Vergleich: was sich ändert

TSV im Vergleich zu JSON
TSVJSON
Vollständiger NameTab-Separated ValuesJavaScript Object Notation
Dateiendung.tsv, .tab.json
Medientyptext/tab-separated-valuesapplication/json
Erstmals veröffentlicht19932001
SpezifikationIANA text/tab-separated-valuesRFC 8259
LizenzlageOffener StandardOffener Standard
Heutiger StandAktuellAktuell
Öffnet im BrowserKein BrowserJeder Browser
Stattdessen erwogenCSVXML, YAML, NDJSON

Was erhalten bleibt

Es geht nichts verloren. TSV und JSON speichern ihren Inhalt verlustfrei — die Umwandlung tauscht die Verpackung, nicht die Qualität, und du kannst sie wiederholen, ohne dass sich Schäden aufsummieren.

Das Ergebnis öffnen

JSON öffnet sich in jedem aktuellen Browser. TSV unterstützen noch weniger Browser. Wenn die Datei auf eine Webseite oder in ein Formular soll, ist das meist der ganze Grund für die Umwandlung.

Die üblichen Programme überschneiden sich nicht: TSV öffnest du in Microsoft Excel, LibreOffice Calc und pandas, JSON in Visual Studio Code, jq und Postman — wer das Ergebnis bekommt, braucht also eines aus der zweiten Reihe.

Wofür die beiden Formate gedacht sind

TSV wurde 1993 veröffentlicht. Festgehalten ist das in IANA text/tab-separated-values — lohnt sich zu kennen, wenn die Datei das Programm überleben soll, das sie geschrieben hat.

JSON stammt aus 2001, festgehalten in RFC 8259. Visual Studio Code, jq und Postman lesen das Format.

TSV zu JSON: häufige Fragen

Werden meine TSV-Dateien irgendwo hochgeladen?

Nein. Diese Umwandlung läuft vollständig in deinem Browser, die Datei verlässt dein Gerät also nicht. Du kannst das selbst nachprüfen: Öffne den Netzwerk-Tab der Entwicklerwerkzeuge und wandle etwas um. Zu sehen sind die Seite selbst und die Statistik- und Werbeanfragen, mit denen dieser Dienst bezahlt wird — und keine einzige, die deine Datei trägt.

Ist das Umwandeln von TSV in JSON kostenlos?

Ja. Kein Konto, kein Wasserzeichen und kein Tageskontingent, das sich verbraucht — es läuft auf deinem eigenen Rechner, du darfst also so oft wiederkommen, wie du willst. Dateien bis 100 MB verarbeitet der Browser, 100 auf einmal.

Geht beim Umwandeln von TSV in JSON Qualität verloren?

Nein. JSON speichert denselben Inhalt, ohne etwas wegzuwerfen — das Ergebnis ist qualitativ mit dem Original identisch.

Ist TSV zu JSON verlustfrei?

Es geht nichts verloren. TSV und JSON speichern ihren Inhalt verlustfrei — die Umwandlung tauscht die Verpackung, nicht die Qualität, und du kannst sie wiederholen, ohne dass sich Schäden aufsummieren.

Mehr über diese Formate