Nachdem wir JSON-Dateien ins JS eingelesen und im Browser oder in der Konsole ausgeben konnte, wird es Zeit JSON-Inhalte zu verändern und diese wieder in JSON-Dateien zu schreiben. Auch hier benötigen wir unser fs-Modul.
Das nachfolgende Codebeispiel zeigt, wie Daten aus dem JS in eine lokale JSON-Datei geschrieben werden.
Codebeispiel
const fs = require("fs");
//
// Daten aendern
daten.ist_aktiv = false;
daten.hobbys.push("Programmieren");
//
// Objekt wieder als JSON-Text schreiben
const output = JSON.stringify(daten, null, 4);
//
fs.writeFile("person_aktualisiert.json", output, "utf8", (err) => {
if (err) {
console.error("Fehler beim Schreiben der Datei:", err.message);
return;
}
console.log("Datei 'person_aktualisiert.json' wurde gespeichert.");
});
Wenn Daten zwischen Client und Server oder zwischen Servern ausgetauscht werden müssen, sieht die Sache etwas anders aus. Hier müssen die Daten HTTP ge-feched (hergeholt) werden.
Codebeispiel mit fetch (moderner)
fetch("person.json")
.then((response) => {
if (!response.ok) {
throw new Error("HTTP-Fehler: " + response.status);
}
return response.json(); // parst JSON automatisch
})
.then((daten) => {
console.log("JSON aus fetch:", daten);
console.log("Name:", daten.name);
})
.catch((error) => {
console.error("Fehler beim Laden:", error.message);
});
Codebeispiel mit async/await (lesbarer)
async function ladePerson() {
try {
const response = await fetch("person.json");
if (!response.ok) {
throw new Error("HTTP-Fehler: " + response.status);
}
const daten = await response.json();
console.log("Person:", daten);
} catch (err) {
console.error("Fehler:", err.message);
}
}
ladePerson();
Typische Probleme:
Test-Script für Node.js
const fs = require("fs");
//
try {
const text = fs.readFileSync("person.json", "utf8");
const daten = JSON.parse(text);
console.log("Erfolgreich eingelesen:");
console.log(JSON.stringify(daten, null, 4));
} catch (err) {
if (err.code === "ENOENT") {
console.error("Datei 'person.json' nicht gefunden.");
} else if (err.name === "SyntaxError") {
console.error("Fehler im JSON-Format:", err.message);
} else {
console.error("Unerwarteter Fehler:", err.message);
}
}