Ein DevOps-Ingenieur exportiert eine Kubernetes-Konfiguration als YAML, muss sie aber an eine API senden, die nur JSON akzeptiert. Ein Analyst erhält API-Antwortdaten in JSON, braucht sie aber in einer Tabellenkalkulation. Ein Data Scientist exportiert eine CSV aus einer Datenbank, benötigt aber strukturiertes JSON für ein Web-Dashboard.
Formatkonvertierung ist nicht nur eine mechanische Operation. Jedes Format macht andere Kompromisse, und zu verstehen, was bei der Übersetzung verloren geht, ist genauso wichtig wie zu wissen, wie man konvertiert.
Drei Formate, drei Philosophien
Jedes Format wurde für eine andere Zielgruppe und ein anderes Problem entwickelt:
| Format | Entstanden | Entwickelt für | Kernphilosophie |
|---|---|---|---|
| CSV | ~1972 | Datenaustausch zwischen Programmen | Maximale Einfachheit — nur Zeilen und Spalten |
| JSON | 2001 | Web-Datenaustausch | Maschinenlesbare strukturierte Daten mit strikten Regeln |
| YAML | 2001 | Konfigurationsdateien | Menschenlesbare strukturierte Daten mit minimaler Syntax |
CSV geht davon aus, dass Ihre Daten eine flache Tabelle sind. Jeder Wert ist eine Zeichenkette. Es gibt kein Konzept für Verschachtelung, Typisierung oder Metadaten.
JSON geht davon aus, dass Ihre Daten Struktur haben — Objekte, Arrays, Typen (Strings, Zahlen, Booleans, Null). Es ist strikt und eindeutig, was es ideal für Maschinen, aber umständlich für Menschen macht.
YAML geht davon aus, dass ein Mensch die Datei lesen und bearbeiten wird. Es verwendet Einrückung statt geschweifter Klammern, unterstützt Kommentare und hat eine lockerere Syntax. Technisch gesehen ist YAML eine Obermenge von JSON — jedes gültige JSON-Dokument ist auch gültiges YAML.
YAML ist eine Obermenge von JSON Sie können ein JSON-Dokument direkt in einen YAML-Parser einfügen und es funktioniert. Umgekehrt gilt das nicht — YAML-Funktionen wie Kommentare, Anker und mehrzeilige Strings haben kein JSON-Äquivalent.
Praxisszenarien für Konvertierungen
Konfigurationsmigration (JSON zu YAML, YAML zu JSON)
Das ist die häufigste Konvertierung. Verschiedene Tools erwarten unterschiedliche Konfigurationsformate:
- Docker Compose, Kubernetes, GitHub Actions, Ansible verwenden YAML
- package.json, tsconfig.json, ESLint verwenden JSON
- Migration zwischen Tools bedeutet oft die Konvertierung von Konfigurationen
Diese Konvertierung ist in beide Richtungen verlustfrei für den Dateninhalt — aber YAML-Kommentare gehen bei der Konvertierung zu JSON verloren, da JSON keine Kommentar-Syntax hat.
Datenanalyse (JSON zu CSV)
API-Antworten kommen in JSON. Analysten brauchen Tabellenkalkulationen. Diese Konvertierung funktioniert gut für flache JSON-Arrays — Arrays von Objekten mit identischen Schlüsseln lassen sich natürlich auf Zeilen und Spalten abbilden.
Aber bei verschachtelten Daten versagt sie. Ein JSON-Objekt mit einem address.city-Feld und einem skills-Array hat keine natürliche CSV-Darstellung. Der Konverter muss wählen: verschachtelte Schlüssel abflachen (address.city wird eine Spalte), verschachtelte Werte als Strings serialisieren oder sie verwerfen.
Datenimport (CSV zu JSON)
Das umgekehrte Szenario: Tabellendaten in eine Webanwendung oder API importieren. CSV-zu-JSON-Konvertierung erzeugt ein Array von Objekten, wobei Spaltenüberschriften als Schlüssel dienen. Der Haken ist, dass CSV keine Typinformation hat — die Zahl 42, der String "42" und der Boolean true sind in CSV alles nur Text. Der Konverter muss die Typen erraten.
Lesbarkeit für Menschen (JSON zu YAML)
Manchmal muss man einfach eine dichte JSON-Konfigurationsdatei lesbar machen. Die Konvertierung zu YAML ergibt saubere Einrückung und die Möglichkeit, Kommentare zur Dokumentation hinzuzufügen. Das ist besonders wertvoll für große Konfigurationsdateien, die von einem Team gepflegt werden.
Was bei der Konvertierung verloren geht
Das ist das kritische Wissen, das Debugging-Zeit spart:
| Konvertierung | Was verloren geht |
|---|---|
| YAML zu JSON | Kommentare (JSON hat keine Kommentar-Syntax) |
| JSON zu CSV | Verschachtelung (CSV ist flach), Typen (alles wird Text), Arrays |
| CSV zu JSON | Nichts (aber Typen müssen abgeleitet werden — "42" vs 42) |
| CSV zu YAML | Nichts (gleiches Problem mit der Typableitung) |
| JSON zu YAML | Nichts (YAML ist eine Obermenge von JSON) |
| YAML zu CSV | Kommentare, Verschachtelung, Typen, Anker/Aliase |
Das Muster ist klar: Konvertierungen in Richtung CSV verlieren die meisten Informationen, da CSV das einfachste Format ist. Konvertierungen zwischen JSON und YAML sind nahezu verlustfrei. Und YAML-Kommentare gehen immer verloren, wenn man YAML verlässt.
Bidirektional vs. Einweg JSON-zu-YAML und YAML-zu-JSON sind effektiv bidirektional (Roundtrip-sicher, außer bei Kommentaren). JSON-zu-CSV und YAML-zu-CSV sind für komplexe Daten Einwegstraßen — Verschachtelung kann aus einer flachen CSV nicht rekonstruiert werden.
Häufige Stolperfallen bei der Konvertierung
YAMLs Typumwandlungsfallen
YAML interpretiert bestimmte Strings automatisch als Nicht-String-Typen. Das Wort no wird zu Boolean false. Das Wort yes wird zu true. Der String 1.0 wird zu einem Float. Ländercodes wie NO (Norwegen) haben berüchtigterweise Fehler verursacht. Setzen Sie mehrdeutige Werte in YAML immer in Anführungszeichen.
CSV-Trennzeichen und Kodierungsverwirrung
Nicht alle CSVs verwenden Kommas. Europäische CSVs verwenden oft Semikolons (weil Kommas in vielen europäischen Zahlenformaten als Dezimaltrennzeichen dienen). Tabulatorgetrennte Werte (TSV) sind eine weitere Variante. Und Zeichenkodierungsinkompatibilitäten (UTF-8 vs Latin-1) erzeugen verstümmelte Umlaute und Sonderzeichen.
JSONs Problem mit abschließenden Kommas
JSON erlaubt keine abschließenden Kommas. Das ist gültiges JavaScript: {"a": 1, "b": 2,} — aber es ist ungültiges JSON. Ein einzelnes abschließendes Komma verursacht einen Parse-Fehler.
Leistung bei großen Datensätzen
Bei Datensätzen mit Millionen von Zeilen ist CSV deutlich effizienter als JSON oder YAML. JSON fügt für jeden Wert geschweifte Klammern, eckige Klammern und Anführungszeichen hinzu. Eine CSV mit 1 Million Zeilen könnte 50 MB groß sein; das äquivalente JSON könnte 150 MB betragen.
Von Anfang an das richtige Format wählen
Anstatt nachträglich zu konvertieren, vermeidet die vorherige Wahl des richtigen Formats Informationsverlust:
- Tabellarische Daten für Tabellenkalkulationen oder Datenbanken — CSV
- Strukturierte Daten für APIs oder Web-Apps — JSON
- Konfiguration, die von Menschen bearbeitet wird — YAML
- Komplexe verschachtelte Daten mit Kommentaren — YAML
- Datenaustausch zwischen Systemen — JSON
Weiterführende Informationen
Konvertieren Sie sofort zwischen JSON, YAML und CSV mit browserbasierten Tools:
- Datenformate konvertieren — Daten einfügen, Zielformat wählen, Ergebnis herunterladen
- JSON Formatter — JSON validieren, formatieren und minifizieren
- JSON zu CSV Konverter — JSON-Arrays in tabellenkalkulations-fertiges CSV konvertieren
- YAML-JSON Konverter — zwischen YAML und JSON konvertieren mit Kommentar-Berücksichtigung
