json.csv.de

JSON zu CSV · Node.js

JSON zu CSV in Node.js

Auf dem Server liest du mit Node.js eine JSON-Datei ein und schreibst 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 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 /[",\n]/.test(s) ? '"' + s.replace(/"/g, '""') + '"' : s;
};

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

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

Hinweise

Im Gegensatz zum Browser arbeitest du hier mit dem Dateisystem statt mit einem Blob. Das Beispiel nutzt die promise-basierte Variante fs/promises mit top-level await, was in ES-Modulen ab Node 14 läuft. Für riesige Dateien, die nicht komplett in den Speicher passen, solltest du 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, Delimiter 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?

Lies die Quelle als Stream und schreibe zeilenweise mit einem WriteStream. So bleibt der Speicherverbrauch konstant, statt das gesamte JSON auf einmal zu parsen.

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