Wie liest man in Node.js eine JSON-Datei aus?
- Grundlagen des Dateilesens in Node.js
- JSON-Datei synchron lesen
- JSON-Datei asynchron lesen
- Moderne Variante mit Promises und async/await
- Wichtige Hinweise
- Fazit
Das Lesen einer JSON-Datei in Node.js ist eine häufige Aufgabe, die für viele Anwendungen wichtig ist, da JSON ein weit verbreitetes Datenformat für den Datenaustausch darstellt. Im Folgenden wird ausführlich erklärt, wie man JSON-Dateien in Node.js einliest, welche Methoden es gibt und worauf man achten sollte.
Grundlagen des Dateilesens in Node.js
Node.js stellt über das eingebaute Modul fs (File System) Funktionen zur Verfügung, mit denen Dateien synchron oder asynchron gelesen werden können. JSON-Dateien sind einfache Textdateien mit einem bestimmten Format, sodass man sie erst einmal als Textdaten lesen und anschließend in ein JavaScript-Objekt umwandeln muss.
JSON-Datei synchron lesen
Eine Möglichkeit JSON-Dateien zu lesen besteht darin, das Modul fs synchron zu verwenden. Dies ist einfach aber blockiert den Event-Loop, weshalb es in produktiven Anwendungen eher sparsam genutzt werden sollte. Ein Beispiel:
const fs = require(fs);const daten = fs.readFileSync(beispiel.json, utf-8);const jsonObjekt = JSON.parse(daten);console.log(jsonObjekt);Hier wird zuerst der Inhalt der Datei beispiel.json als String eingelesen. Mit JSON.parse() wird dieser String in ein JavaScript-Objekt umgewandelt, das man dann weiterverarbeiten kann.
JSON-Datei asynchron lesen
Da Node.js asynchron und nicht-blockierend arbeitet, ist es meist besser, die Datei asynchron zu lesen. Dies kann mit fs.readFile oder mit Promises erfolgen:
const fs = require(fs);fs.readFile(beispiel.json, utf-8, (err, daten) => { if (err) { console.error(Fehler beim Lesen der Datei:, err); return; } try { const jsonObjekt = JSON.parse(daten); console.log(jsonObjekt); } catch (parseErr) { console.error(Fehler beim Parsen der JSON-Daten:, parseErr); }});In diesem Beispiel wird die Datei im Hintergrund eingelesen. Erst wenn der Lesevorgang fertig ist, wird die Callback-Funktion aufgerufen. Dort überprüfen wir mögliche Fehler beim Lesen und auch das Parsen der JSON-Daten.
Moderne Variante mit Promises und async/await
Ab Node.js Version 10 können die fs-Methoden auch Promises unterstützen über das Modul fs/promises. Das ermöglicht eine saubere Programmierung mit async und await:
const fs = require(fs/promises);async function jsonDateiLesen(pfad) { try { const daten = await fs.readFile(pfad, utf-8); const jsonObjekt = JSON.parse(daten); console.log(jsonObjekt); } catch (fehler) { console.error(Fehler beim Lesen oder Parsen:, fehler); }}jsonDateiLesen(beispiel.json);Diese Methode ist moderner, übersichtlicher und gut wartbar, besonders wenn mehrere asynchrone Operationen hintereinander ausgeführt werden sollen.
Wichtige Hinweise
Beim Lesen von JSON-Dateien sollte man darauf achten, dass die Datei valide JSON enthält, da sonst JSON.parse() eine Exception auslöst. Auch sollte der richtige Zeichensatz (meist UTF-8) beim Einlesen übergeben werden. Für einfache Konfigurationsdateien gibt es auch die Möglichkeit, JSON-Dateien direkt mit require() zu laden, aber das funktioniert nur synchron und beim Start, eignet sich also nicht für dynamische Lesevorgänge.
Fazit
Das Einlesen von JSON-Dateien in Node.js ist mit dem fs-Modul einfach umzusetzen. Je nach Anwendungsfall kann man die synchronen oder asynchronen Methoden verwenden. Die Verwendung von Promises und async/await ist dabei die flexibelste und modernste Lösung, die eine klare und verständliche Fehlerbehandlung ermöglicht. Damit kann man JSON-Daten aus Dateien effizient und sicher im eigenen Node.js-Projekt verwenden.
