CSV in JSON Wann konvertieren und wie halten Sie Ihre Daten sauber?
Die meisten CSV-Dateien sind unordentlich. Sie enthalten leere Zellen, wo Null-Werte sein sollten, unkonstante Zitierungen und keine festgelegte Schema. Die Umwandlung in sauberes JSON ist keine Formatänderung – es ist ein Datenreinigungsproblem.
Dieser Leitfaden erklärt, wann man den Wechsel vornehmen sollte, was während der Umwandlung schiefgeht und wie man die Randfälle korrekt behandelt – entweder mit einem schnellen CSV in JSON-Wandler oder einem benutzerdefinierten Skript.
CSV vs JSON: Die ehrliche Abwägung
CSV ist kompakt, universell lesbar und lässt sich leicht in Tabellenkalkulationen importieren. Für flache, tabellarische Daten – wie Exporte aus Datenbanken, Analysepipelines oder Finanzaufzeichnungen – ist es immer noch das richtige Format. Wenn Ihre Daten in Zeilen und Spalten liegen und keine Hierarchie aufweisen, ist CSV in Ordnung.
JSON wird die bessere Wahl, wenn:
- Ihre Daten eine Hierarchie oder Verknüpfung aufweisen (z. B. ein Benutzer mit mehreren Adressen)
- Sie explizite Typinformation benötigen (die Zahl 42 im Gegensatz zur Zeichenkette „42“)
- Sie Daten an eine API oder eine JavaScript-Anwendung weitergeben
- Sie explizit eine Null darstellen möchten, nicht nur ein leeres Feld
Die Abwägung ist nicht darüber, welches Format „besser“ ist. Es geht darum, ob Ihre Struktur jenseits dessen liegt, was CSV darstellen kann.
Die Probleme, die CSV verursacht
Bevor Sie konvertieren, müssen Sie verstehen, was schiefgelaufen ist.
Keine Standardregel für Null-Werte. Eine leere Zelle in einem CSV-Datei könnte bedeuten, dass es ein Null-Wert, eine Null, eine leere Zeichenkette oder fehlende Daten ist. Es gibt keine Möglichkeit, dies aus der Datei abzulesen. Eine leere Spalte könnte in einem System „unbekannt“ bedeuten und in einem anderen „0“. age Unkonstante Zitierungen.
Werte mit Kommas sollen in Doppelzitaten ( ) eingeklammert sein, aber nicht jeder Exporter folgt dem Standard. Sie finden ungezitierte Kommas, unpassende Zitierungen und Zellen, die eine Zitierungsöffnung haben, aber nie schließen."Portland, OR"Encoding-Probleme.
CSV-Dateien kommen oft mit einem UTF-8-BOM, Windows-1252-Zeichen oder einer Kombination davon. Smart-Quotes, Em-Dashes und akzentuierte Zeichen stören Parser, die auf sauberen ASCII warten. Keine Typinformation.
Jeder Wert in einem CSV-Datei ist ein String. Die Zahl 42, der boolesche Wert „true“ und das Datum 2024-01-01 werden alle als Text gespeichert. Eine blinden Umwandlung in JSON führt zu einem Dokument voller Strings, wo Sie Zahlen und boolesche Werte erwartet haben. Wie die Umwandlung korrekt durchgeführt wird
Die Mechanik ist einfach: Jede CSV-Zeile wird zu einem JSON-Objekt, wobei die Spaltenüberschriften als Schlüssel dienen. Das Problem liegt jedoch darin, was vor und nach dieser Zuordnung geschieht.
Typumwandlung.
Eine Spalte mit ganzen Zahlen sollte zu JSON-Zahlen werden. Eine Spalte mit „true“/„false“-Werten sollte zu booleschen Werten werden. Aber eine ZIP-Code-Spalte, die wie eine ganze Zahl aussieht (z. B. 90210), sollte als String bleiben – die Umwandlung zerstört die führenden Nullen. Umgang mit Null-Werten.
Leere Zellen erfordern eine Entscheidung: Umwandlung in , das Feld komplett zu überspringen oder einen Standardwert zu verwenden. Wählen Sie einen und bleiben Sie konsistent. nullFehlende Felder.
Wenn eine Zeile weniger Spalten hat als die Überschrift, muss Ihr Parser dies sanft behandeln – entweder mit oder der Zeile zu überspringen. null Hier ist ein Python-Codeausschnitt, der alle drei Fälle behandelt:
Die Codierung entfernt das BOM, wenn vorhanden.
import csv
import json
def coerce_value(value):
if value == '':
return None
try:
return int(value)
except ValueError:
pass
try:
return float(value)
except ValueError:
pass
if value.lower() in ('true', 'false'):
return value.lower() == 'true'
return value
def csv_to_json(csv_path, json_path):
with open(csv_path, encoding='utf-8-sig') as f: # utf-8-sig strips BOM
reader = csv.DictReader(f)
rows = []
for row in reader:
rows.append({k: coerce_value(v) for k, v in row.items() if k})
with open(json_path, 'w', encoding='utf-8') as f:
json.dump(rows, f, indent=2, ensure_ascii=False)
csv_to_json('input.csv', 'output.json')
Der utf-8-sig Versucht die numerische Umwandlung in der Reihenfolge: Ganze Zahl zuerst, dann Fließkommazahl, dann boolesch, dann String. Die coerce_value Filter entfernt phantom Spalten aus dem Headerzeile, die durch trailing Kommas entstehen. if k Nestete JSON aus flachen CSV
CSV kann keine Hierarchie direkt darstellen, aber es gibt zwei gängige Strategien.
Doppelpunkt-Notation.
Einige CSV-Exporte verwenden Überschriften wie . Ein Nachverarbeitungsschritt teilt auf dem Punkt und erstellt verschachtelte Objekte: address.city und address.zipGruppierung und Verschachtelung.
def unflatten(row):
result = {}
for key, value in row.items():
parts = key.split('.')
d = result
for part in parts[:-1]:
d = d.setdefault(part, {})
d[parts[-1]] = value
return result
Wenn mehrere Zeilen Kinder eines gemeinsamen Elterns darstellen (z. B. Bestellzeilen unter einer Bestellung), gruppiert man nach der Eltern-ID und erstellt das verschachtelte Array nach der Umwandlung. Keine dieser Ansätze gehört in einen schnellen Konvertierungsprozess – wenn Sie das tun, schreiben Sie ein Transformations-Skript, nicht nur ein Formatwechsel. Welches Tool verwenden?
Für eine saubere, gut strukturierte CSV-Datei, die nur einen Formatwechsel benötigt: verwenden Sie einen Online-
. Fügen Sie ein, konvertieren, fertig. Keine Einrichtung, keine Abhängigkeiten. CSV in JSON-WandlerFür eine CSV-Datei mit bekannten Problemen – wie Encoding-Fehler, unkonstante Zitierungen, Typumwandlungen oder Null-Werte – schreiben Sie ein Skript. Der obige Python-Code behandelt die meisten realen Fälle. Pandas ist ebenfalls eine Option (
), aber es macht seine eigenen Typumwandlungsentscheidungen, die möglicherweise nicht Ihren Wünschen entsprechen.pd.read_csv() + df.to_json()Für einzeilige Befehle im Terminal,
Miller ) ist der schnellste Weg: (mlrMiller behandelt Zitierungen, Encoding und fehlende Felder korrekt aus der Box. Es ist der schnellste Weg von einer problematischen CSV zu sauberem JSON ohne jegigen Code zu schreiben.
mlr --icsv --ojson cat input.csv > output.json
CSV-Randfälle und wie man sie behandelt
CSV-Problem
| Was JSON erhält | Wie es behandelt wird | Leere Zelle |
|---|---|---|
| oder fehlendes Feld | null Entscheiden Sie frühzeitig; bleiben Sie konsistent in allen Zeilen | Zahlenartige Zeichenkette (ZIP-Code) |
| Verliert führende Nullen bei Umwandlung | Bleiben als Zeichenkette; umwandeln Sie nur Spalten, die Sie kontrollieren | Trailing Komma in der Überschrift |
| Leeres Feld | auf jeder Zeile "" auf jeder Zeile | Filter mit if k beim Erstellen von Objekten |
| UTF-8-BOM am Dateiende | Parse-Fehler oder im ersten Schlüssel | Öffnen mit encoding='utf-8-sig' |
| Zitierter Zeilenumbruch innerhalb einer Zelle | Stört naive Zeilenweise Parser | Verwenden Sie einen echten CSV-Parser, nicht split(',') |
"true"/"false" in einer booleschen Spalte | "true" Zeichenkette, nicht true boolesch | Explizite Umwandlung nach kleinschreibungsgleicher Vergleich |
Der Formatwechsel ist einfach. Die Daten sind nicht.
Ein CSV-in-JSON-Wandler behandelt die strukturelle Seite in Sekunden. Was lange dauert, ist das Verständnis, was tatsächlich in Ihrer Datei ist – die Null-Werte, die Encoding-Fehler, die Spalten, die wie Zahlen aussehen, aber keine sind. Schreiben Sie die Typumwandlungen und Null-Handling explizit, anstatt auf eine Vermutung eines Tools zu vertrauen, und Sie vermeiden die nachfolgenden Bugs, die durch stillschweigend falsche Daten entstehen.
Das könnte Ihnen auch gefallen
Erweiterungen installieren
IO-Tools zu Ihrem Lieblingsbrowser hinzufügen für sofortigen Zugriff und schnellere Suche
恵 Die Anzeigetafel ist eingetroffen!
Anzeigetafel ist eine unterhaltsame Möglichkeit, Ihre Spiele zu verfolgen. Alle Daten werden in Ihrem Browser gespeichert. Weitere Funktionen folgen in Kürze!
Unverzichtbare Tools
Alle Neuheiten
AlleAktualisieren: Unser neuestes Werkzeug hinzugefügt am 25. Apr. 2026
