json.csv.de

JSON zu CSV · JavaScript

JSON zu CSV in JavaScript

Im Browser brauchst du keine Bibliothek, um JSON in CSV zu verwandeln. Ein paar Zeilen reines JavaScript reichen aus, um ein Array von Objekten in eine Tabelle zu überführen und sie direkt als Datei zum Download anzubieten. Wichtig ist nur das saubere Maskieren der Sonderzeichen.

Ansatz

Reines JavaScript ohne Bibliothek, manuelles Quoting nach RFC 4180 und Download über einen Blob.

Code-Beispiel

function jsonZuCsv(daten) {
  const spalten = [...new Set(daten.flatMap(o => Object.keys(o)))];

  const escape = (wert) => {
    const s = wert == null ? "" : String(wert);
    // Quoten, sobald Komma, Anführungszeichen oder Umbruch vorkommt
    if (/[",\n]/.test(s)) {
      return '"' + s.replace(/"/g, '""') + '"';
    }
    return s;
  };

  const kopf = spalten.map(escape).join(",");
  const zeilen = daten.map(o => spalten.map(k => escape(o[k])).join(","));
  return [kopf, ...zeilen].join("\r\n");
}

const csv = jsonZuCsv([{ name: "Müller, A.", ort: "Köln" }]);
const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" });
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = "daten.csv";
a.click();

Hinweise

Der Kern ist die escape-Funktion: Ein Wert wird nur dann in Anführungszeichen gesetzt, wenn er ein Komma, ein Anführungszeichen oder einen Zeilenumbruch enthält, und innenliegende Anführungszeichen werden verdoppelt. Das entspricht dem RFC-4180-Standard, den auch Excel und LibreOffice erwarten. Als Zeilentrenner nutzt das Beispiel CRLF, weil sich das mit Tabellenprogrammen am robustesten verhält. null und undefined werden bewusst zu leeren Zellen, damit keine Texte wie "undefined" in der Tabelle landen. Verschachtelte Objekte würden über String() als [object Object] erscheinen, also flachst du sie vorher ab oder serialisierst sie mit JSON.stringify. Für Excel mit Umlauten kannst du dem Blob ein BOM voranstellen, indem du "\uFEFF" an den CSV-String hängst.

Anzeige

FAQ

Häufige Fragen

Warum nicht einfach join mit Komma ohne Escaping?

Sobald ein Wert selbst ein Komma, ein Anführungszeichen oder einen Zeilenumbruch enthält, zerschießt das die Spaltenstruktur. Die escape-Funktion verhindert genau diese kaputten Zeilen.

Wie erscheinen Umlaute in Excel richtig?

Stelle dem CSV-String ein BOM voran: new Blob(["\uFEFF" + csv], ...). Dann erkennt Excel die UTF-8-Kodierung und zeigt ä, ö, ü korrekt an.

Du willst nicht selbst programmieren? Der JSON-zu-CSV-Converter wandelt deine Daten direkt im Browser um, ohne Upload und ohne Installation.

Anzeige
Anzeige
Anzeige
Anzeige