CSV vs JSON vs XML: Das richtige Datenformat wählen
Jeder Datenaustausch erfordert die Wahl eines Formats. CSV, JSON und XML sind die drei häufigsten Optionen, jede mit eigenen Stärken. Das falsche Format zu wählen führt zu Parsing-Problemen, aufgeblähten Payloads und verschwendeter Entwicklungszeit. Dieser Leitfaden hilft Ihnen, das richtige Werkzeug für die Aufgabe zu wählen.
Formatübersicht
CSV (Comma-Separated Values)
name,age,city
Alice,30,London
Bob,25,Paris
Charlie,35,Tokyo
- Struktur: Flach, tabellarisch (Zeilen und Spalten)
- Typsystem: Keins (alles ist Text)
- Verschachtelung: Nicht unterstützt
- Größe: Kleinste für tabellarische Daten
JSON (JavaScript Object Notation)
[
{"name": "Alice", "age": 30, "city": "London"},
{"name": "Bob", "age": 25, "city": "Paris"},
{"name": "Charlie", "age": 35, "city": "Tokyo"}
]
- Struktur: Hierarchisch (Objekte, Arrays)
- Typsystem: String, Number, Boolean, Null, Object, Array
- Verschachtelung: Native Unterstützung
- Größe: Mittel
XML (eXtensible Markup Language)
<people>
<person>
<name>Alice</name>
<age>30</age>
<city>London</city>
</person>
<person>
<name>Bob</name>
<age>25</age>
<city>Paris</city>
</person>
</people>
- Struktur: Hierarchisch mit Attributen und Elementen
- Typsystem: Über XML Schema (XSD)
- Verschachtelung: Native Unterstützung
- Größe: Größte (ausführliche Tags)
Detaillierter Vergleich
| Merkmal | CSV | JSON | XML |
|---|---|---|---|
| Lesbarkeit | Hoch (tabellarisch) | Hoch | Niedrig (ausführlich) |
| Dateigröße | Kleinste | Mittel | Größte |
| Parse-Geschwindigkeit | Schnellste | Schnell | Langsamste |
| Verschachtelung | Nein | Ja | Ja |
| Schema | Kein Standard | JSON Schema | XSD, DTD |
| Kommentare | Nein | Nein | Ja |
| Metadaten | Nein | Nein | Ja (Attribute) |
| Streaming | Zeile für Zeile | SAX/Streaming | SAX/StAX |
| Binärdaten | Nein | Base64-String | Base64 oder CDATA |
| Namensräume | Nein | Nein | Ja |
Wann CSV verwenden
Am besten für:
- Tabellenkalkulations- und Datenbankexporte
- Datenanalyse (pandas, R, Excel)
- Einfache flache Daten mit konsistenten Spalten
- Maximale Kompatibilität (jedes Tool unterstützt CSV)
- Große Datensätze, bei denen Größe wichtig ist
Vermeiden wenn:
- Daten verschachtelte oder hierarchische Struktur haben
- Mehrere Datentypen erhalten bleiben müssen
- Spaltenwerte Kommas, Zeilenumbrüche oder Anführungszeichen enthalten (Grenzfälle)
Arbeiten Sie mit CSV-Daten mit unserem CSV-Editor oder konvertieren Sie in JSON mit unserem CSV-zu-JSON-Konverter.
Wann JSON verwenden
Am besten für:
- Web-API-Kommunikation (REST, GraphQL-Antworten)
- Konfigurationsdateien (package.json, tsconfig.json)
- Dokumentenorientierte Datenbanken (MongoDB, CouchDB)
- Browser-Umgebungen (natives JavaScript-Parsing)
- Daten mit variabler Struktur (einige Datensätze haben Felder, die andere nicht haben)
Vermeiden wenn:
- Daten rein tabellarisch sind (CSV ist einfacher und kleiner)
- Sie XML-Funktionen benötigen (Namensräume, Schemata, XSLT)
- Sie Kommentare in Ihren Datendateien benötigen (verwenden Sie stattdessen YAML)
Formatieren und validieren Sie JSON mit unserem JSON-Formatierer.
Wann XML verwenden
Am besten für:
- Enterprise-Systeme (SOAP, XHTML, RSS, SVG)
- Dokument-Markup (gemischter Inhalt — Text mit eingebetteter Struktur)
- Wenn Sie Attribute neben Elementen benötigen
- Strenge Schema-Validierungsanforderungen (XSD)
- XSLT-Transformationen
- Branchenspezifische Standards (Gesundheitswesen HL7, Finanzwesen XBRL)
Vermeiden wenn:
- Moderne Web-APIs gebaut werden (JSON ist der Standard)
- Daten tabellarisch sind (CSV ist einfacher)
- Dateigröße und Parse-Geschwindigkeit wichtig sind (JSON ist schlanker)
Größenvergleich
Derselbe Datensatz mit 1000 Einträgen:
| Format | Dateigröße | Parse-Zeit (relativ) |
|---|---|---|
| CSV | 45 KB | 1x (Basis) |
| JSON | 85 KB | 1,5x |
| XML | 140 KB | 3x |
Die Ausführlichkeit von XML — öffnende Tags, schließende Tags und Elementnamen, die für jeden Wert wiederholt werden — verdreifacht die Größe im Vergleich zu CSV ungefähr.
Migrationsmuster
CSV zu JSON
import csv, json
with open('data.csv') as f:
reader = csv.DictReader(f)
data = list(reader)
with open('data.json', 'w') as f:
json.dump(data, f, indent=2)
JSON zu CSV
import csv, json
with open('data.json') as f:
data = json.load(f)
with open('data.csv', 'w', newline='') as f:
writer = csv.DictWriter(f, fieldnames=data[0].keys())
writer.writeheader()
writer.writerows(data)
XML zu JSON
import xmltodict, json
with open('data.xml') as f:
data = xmltodict.parse(f.read())
with open('data.json', 'w') as f:
json.dump(data, f, indent=2)
Die moderne Landschaft
Der Trend des letzten Jahrzehnts ist klar: JSON hat XML für Web-APIs und Konfiguration weitgehend ersetzt. CSV bleibt jedoch dominant für den Datenaustausch in Analytik und Geschäftskontexten, und XML besteht in Enterprise- und Regierungssystemen fort.
Neuere Alternativen:
- YAML: Menschenfreundliche Konfiguration (ersetzt sowohl JSON als auch XML für Konfigurationen)
- Protocol Buffers / MessagePack: Binärformate für Hochleistungssysteme
- Parquet / Arrow: Spaltenformate für Big-Data-Analytik
Für einen Vergleich von JSON und YAML im Speziellen siehe unseren YAML vs JSON-Leitfaden.
FAQ
Kann ich zwischen diesen Formaten konvertieren, ohne Daten zu verlieren?
CSV zu JSON ist verlustfrei für flache Daten (obwohl Typen verloren gehen — Zahlen werden in CSV zu Strings). JSON zu CSV verliert hierarchische Struktur (verschachtelte Objekte müssen abgeflacht werden). XML zu JSON ist größtenteils verlustfrei, aber Attribute und gemischter Inhalt können knifflig sein. Testen Sie immer die Hin-und-Rück-Konvertierung mit Ihren spezifischen Daten.
Welches Format sollte ich für meine neue API verwenden?
JSON. Es ist der De-facto-Standard für moderne Web-APIs mit nativer Browser-Unterstützung, hervorragendem Tooling und der besten Balance aus Lesbarkeit und Größe. Verwenden Sie JSON Schema für die Validierung. Die einzige Ausnahme ist, wenn Sie sich in ältere Enterprise-Systeme integrieren, die XML erfordern.
Verwandte Ressourcen
- CSV-Editor — CSV-Daten bearbeiten und bereinigen
- JSON-Formatierer — JSON formatieren und validieren
- CSV-zu-JSON-Konvertierungsleitfaden — Schritt-für-Schritt-Konvertierung