CSV und XML sind überall —— Tabellenkalkulations-Exporte, Legacy-APIs, Enterprise-Feeds —— aber der meiste moderne Code will JSON. Die Konvertierung dazwischen ist unkompliziert, sobald Sie die Mapping-Regeln und die Fallstricke verstehen (alles in CSV ist ein String; XML-Attribute und wiederholte Elemente brauchen besondere Behandlung). Dieser Guide deckt beide Konvertierungen in JavaScript, Python und im Browser ab.
Umfang: Dieser Artikel ist das breite How-to, das CSV → JSON und XML → JSON an einem Ort behandelt. Wenn Sie speziell XML brauchen —— Attribute, Textknoten, wiederholte Elemente und Namespaces im Detail —— lesen Sie XML-zu-JSON-Konvertierung: Attribute, Textknoten, Arrays und Namespaces. Für die umgekehrte Richtung siehe JSON zu XML.
CSV in JSON konvertieren
Eine CSV-Datei besteht aus Zeilen mit kommagetrennten Werten, üblicherweise mit einer Kopfzeile. Die natürliche JSON-Darstellung ist ein Array von Objekten, eines pro Zeile, mit der Kopfzeile als Schlüssel:
# CSV
id,name,active
1,Ada,true
2,Bob,false// JSON
[
{ "id": "1", "name": "Ada", "active": "true" },
{ "id": "2", "name": "Bob", "active": "false" }
] Beachten Sie, dass jeder Wert ein String ist —— CSV hat keine Typen. "1" in eine Zahl oder "true" in einen Boolean zu konvertieren ist ein separater Coercion-Schritt, den Sie bewusst durchführen müssen.
CSV zu JSON in JavaScript
Für vertrauenswürdiges, einfaches CSV können Sie manuell splitten —— aber echtes CSV hat zitierte Felder mit Kommas und Zeilenumbrüchen, also nehmen Sie in Produktion einen ordentlichen Parser wie papaparse:
// Minimal-Parser —— nur sicher für einfaches, unzitiertes CSV
function csvToJson(csv) {
const [header, ...rows] = csv.trim().split('\n');
const keys = header.split(',');
return rows.map((row) => {
const values = row.split(',');
return Object.fromEntries(keys.map((k, i) => [k, values[i]]));
});
}
// Produktion —— behandelt Anführungszeichen, eingebettete Kommas, Zeilenumbrüche
import Papa from 'papaparse';
const result = Papa.parse(csvText, { header: true, dynamicTyping: true });
// dynamicTyping wandelt "1" → 1 und "true" → true automatischCSV zu JSON in Python
import csv, json
with open('data.csv', newline='') as f:
rows = list(csv.DictReader(f)) # Liste von Dicts mit der Kopfzeile als Schlüssel
print(json.dumps(rows, indent=2))XML in JSON konvertieren
XML ist kniffliger, weil es Konzepte hat, die JSON fehlen: Attribute, Textknoten und einzeln-vs-wiederholt erscheinende Elemente. Es gibt kein einzelnes „korrektes“ Mapping —— wählen Sie eine Konvention und wenden Sie sie konsequent an.
<!-- XML -->
<user id="1">
<name>Ada</name>
<role>admin</role>
<role>editor</role>
</user>// Ein verbreitetes JSON-Mapping
{
"user": {
"@id": "1", // Attribut, mit Präfix @
"name": "Ada", // Einzelnes Kind → Wert
"role": ["admin", "editor"] // Wiederholtes Kind → Array
}
}XML zu JSON in JavaScript
import { XMLParser } from 'fast-xml-parser';
const parser = new XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@' });
const obj = parser.parse(xmlString);
// Im Browser können Sie auch DOMParser nehmen und den Knotenbaum manuell ablaufen.XML zu JSON in Python
import xmltodict, json
doc = xmltodict.parse(xml_string) # Attribute werden zu "@name"-Schlüsseln
print(json.dumps(doc, indent=2))Mapping-Fallstricke, auf die zu achten ist
- Typen gehen verloren. CSV- und XML-Werte kommen als Strings an. Casten Sie Zahlen und Booleans explizit —— nehmen Sie nicht an, der Parser hätte es gemacht.
- Einzeln vs wiederholt. Ein
<role>wird ein Wert; zwei werden ein Array. Entscheiden Sie, ob ein Feld immer ein Array sein soll, um Konsumenten nicht zu überraschen. - Attribute vs Kindelemente.Wählen Sie eine Präfixkonvention (üblich
@) und dokumentieren Sie sie. - Leere Werte und Whitespace. Leere XML-Elemente und nachgestellte CSV-Kommas können je nach Parser
null,""oder fehlende Schlüssel erzeugen.
BOM und Kodierungs-Eigenheiten
Aus Excel und einigen Windows-Tools exportierte Dateien beginnen mit einem UTF-8-BOM (0xEF 0xBB 0xBF). Entfernen Sie es vor dem Parsen, sonst enthält Ihre erste Kopfzeile/Ihr erster Elementname es stillschweigend. RFC 8259 verbietet ein BOM am Anfang von JSON, also sollte jeder Konverter, den Sie bauen, es aus der Eingabe entfernen, statt es in die Ausgabe zu übernehmen.
TSV vs CSV (und andere Trennzeichen)
„CSV“ ist nicht immer kommagetrennt. Tab-getrennte Werte (TSV) sind in Engineering-Pipelines üblich, weil Tabs in Werten fast nie vorkommen, sodass die ganze Quoting-Maschinerie entfallen kann. Europäische Excel-Exporte verwenden oft ;. Wenn Ihre Ausgabe wie eine seltsame einzelne Spalte aussieht, verwendet die Datei ein anderes Trennzeichen, als Ihr Parser erwartet —— wechseln Sie das Trennzeichen oder verwenden Sie eine Bibliothek, die es erkennt.
XML-Namespaces
XML-Elemente können mit einem Namespace-Präfix qualifiziert sein (z. B. <soap:Envelope>), gebunden durch eine xmlns-Deklaration. JSON kennt kein Namespace-Konzept, daher wählen die meisten Konverter einen von drei Wegen: das Präfix im Schlüssel behalten ("soap:Envelope"), es entfernen oder xmlns-Deklarationen als @xmlns:*-Attribute speichern. Das Präfix zu behalten ist die einzig verlustfreie Option. Für den tiefen Einstieg siehe XML-zu-JSON-Konvertierung.
Ergebnis validieren und formatieren
Nach der Konvertierung bestätigen Sie, dass die Ausgabe wohlgeformt und lesbar ist:
- Prüfen Sie mit dem JSON-Validator, dass es parst —— siehe JSON validieren.
- Pretty-printen Sie es zum Review —— siehe JSON formatieren.
- Wenn die Konvertierung nicht ganz gültiges JSON erzeugt hat (einfache Anführungszeichen, Trailing Commas), JSON Fix repariert es sofort.
Häufig gestellte Fragen
Wie konvertiere ich CSV in JSON?
Parsen Sie das CSV in Zeilen und mappen Sie jede auf ein Objekt, das durch die Kopfzeile indiziert ist —— verwenden Sie csv.DictReader in Python oder eine Bibliothek wie papaparse in JavaScript. Bedenken Sie, dass alle Werte zunächst Strings sind; casten Sie Typen selbst.
Warum sind alle meine CSV-zu-JSON-Werte Strings?
CSV ist typlos —— jedes Feld ist Text. Aktivieren Sie Typ-Coercion (z. B. dynamicTyping von papaparse) oder konvertieren Sie Zahlen und Booleans nach dem Parsen explizit.
Wie behandle ich XML-Attribute beim Umwandeln in JSON?
Die meisten Konverter mappen Attribute auf Schlüssel mit einem Präfix wie @ (z. B. @id). Wählen Sie eine Konvention und wenden Sie sie konsequent an, damit nachgelagerter Code weiß, wo er suchen muss.
Warum gibt meine XML-zu-JSON-Ausgabe mal ein Objekt und mal ein Array?
Ein einzelnes Kindelement wird auf einen Wert gemappt; ein wiederholtes Element auf ein Array. Konfigurieren Sie Ihren Parser so, dass bestimmte Elemente immer als Arrays behandelt werden, wenn Konsumenten eine konsistente Form erwarten.
Im Browser konvertieren, validieren und formatieren
- JSON in CSV konvertieren (und zurück) —— die umgekehrte Richtung mit Ein-Klick-Konverter
- JSON-zu-CSV-Konverter —— JSON ⇄ CSV im Browser
- XML-zu-JSON-Konvertierung —— Attribute, Textknoten, Arrays und Namespaces im Detail
- JSON zu XML —— die umgekehrte Richtung, mit JSON-⇄-XML-Konverter
- JSON-Validator —— bestätigen Sie, dass Ihr konvertiertes JSON gültig ist
- JSON Fix —— nicht ganz gültige Konverter-Ausgabe reparieren
- JSON formatieren —— das Ergebnis pretty-printen
- Was ist JSON? —— die Typen und Regeln des Zielformats