json-csv.de

JSON zu CSV · Node.js

JSON zu CSV in Node.js

Auf dem Server lesen Sie mit Node.js eine JSON-Datei ein und schreiben das Ergebnis direkt als CSV-Datei zurück. Das eingebaute fs-Modul genügt, externe Pakete wie csv-stringify sind nur bei sehr großen Datenmengen oder Streaming nötig. Das folgende Skript läuft ohne Installation.

Ansatz

fs/promises zum Lesen und Schreiben, eigenes Quoting für RFC-4180-konformes CSV.

Code-Beispiel

import { readFile, writeFile } from "node:fs/promises";

const trenner = ";";
const daten = JSON.parse(await readFile("daten.json", "utf-8"));

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

const escape = (wert) => {
  const s = wert == null ? "" : String(wert);
  return s.includes(trenner) || /["\r\n]/.test(s) ? '"' + s.replace(/"/g, '""') + '"' : s;
};

const zeilen = [
  spalten.map(escape).join(trenner),
  ...daten.map(o => spalten.map(k => escape(o[k])).join(trenner)),
];

await writeFile("daten.csv", "\uFEFF" + zeilen.join("\r\n"), "utf-8");
console.log("Fertig: daten.csv geschrieben");

Hinweise

Im Gegensatz zum Browser arbeiten Sie hier mit dem Dateisystem statt mit einem Blob. Das Beispiel nutzt die promise-basierte Variante fs/promises mit Top-Level-Await, das in ES-Modulen ab Node 14.8 läuft. Speichern Sie die Datei deshalb als .mjs oder setzen Sie "type": "module" in der package.json. Für riesige Dateien, die nicht komplett in den Speicher passen, sollten Sie auf einen Stream umsteigen und Zeile für Zeile schreiben, sonst kann der Prozess am Heap-Limit scheitern. Das vorangestellte \uFEFF ist das BOM und sorgt dafür, dass Excel die Datei als UTF-8 öffnet. Wer regelmäßig komplexe oder verschachtelte JSON-Strukturen verarbeitet, fährt mit dem Paket csv-stringify oder fast-csv besser, weil diese Quoting, Trennzeichen und Streaming sauber kapseln. Für einmalige Umwandlungen bleibt das eigene Skript aber schlank und ohne node_modules.

Anzeige

FAQ

Häufige Fragen

Brauche ich ein npm-Paket für JSON zu CSV?

Nein, das eingebaute fs-Modul reicht für die Umwandlung. Pakete wie csv-stringify lohnen sich erst bei Streaming, sehr großen Dateien oder vielen Sonderfällen beim Quoting.

Wie verarbeite ich Dateien, die nicht in den RAM passen?

Lesen Sie die Quelle als Stream und schreiben Sie zeilenweise mit einem WriteStream. So bleibt der Speicherverbrauch konstant, statt das gesamte JSON auf einmal zu parsen. Das geht am einfachsten mit JSON Lines, also einem Objekt pro Zeile.

Sie wollen nicht selbst programmieren? Der JSON-CSV-Konverter wandelt Ihre Daten direkt im Browser um, ohne Upload und ohne Installation.

Anzeige
Anzeige
Anzeige
Anzeige