Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| de:modul:m307:learningunits:lu02:04 [2026/02/09 13:41] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m307:learningunits:lu02:04 [2026/02/09 13:41] (aktuell) – ↷ Seite von de:modul:m307:learningunits:lu01:04 nach de:modul:m307:learningunits:lu02:04 verschoben vdemir | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LU02d - JSON-Datei verändern und speichern ====== | ||
| + | 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 // | ||
| + | ===== Geaenderte Daten wieder in eine JSON-Datei schreiben ===== | ||
| + | Das nachfolgende Codebeispiel zeigt, wie Daten aus dem JS in eine lokale JSON-Datei geschrieben werden. | ||
| + | |||
| + | **Codebeispiel** | ||
| + | |||
| + | const fs = require(" | ||
| + | // | ||
| + | // Daten aendern | ||
| + | daten.ist_aktiv = false; | ||
| + | daten.hobbys.push(" | ||
| + | // | ||
| + | // Objekt wieder als JSON-Text schreiben | ||
| + | const output = JSON.stringify(daten, | ||
| + | // | ||
| + | fs.writeFile(" | ||
| + | if (err) { | ||
| + | console.error(" | ||
| + | return; | ||
| + | } | ||
| + | console.log(" | ||
| + | }); | ||
| + | |||
| + | ===== JSON im Browser einlesen (z. B. von einem Server) ===== | ||
| + | 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(" | ||
| + | .then((response) => { | ||
| + | if (!response.ok) { | ||
| + | throw new Error(" | ||
| + | } | ||
| + | return response.json(); | ||
| + | }) | ||
| + | .then((daten) => { | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | }) | ||
| + | .catch((error) => { | ||
| + | console.error(" | ||
| + | }); | ||
| + | |||
| + | |||
| + | **Codebeispiel mit async/await (lesbarer)** | ||
| + | |||
| + | async function ladePerson() { | ||
| + | try { | ||
| + | const response = await fetch(" | ||
| + | if (!response.ok) { | ||
| + | throw new Error(" | ||
| + | } | ||
| + | const daten = await response.json(); | ||
| + | console.log(" | ||
| + | } catch (err) { | ||
| + | console.error(" | ||
| + | } | ||
| + | } | ||
| + | ladePerson(); | ||
| + | |||
| + | ===== Fehlerquellen und Handling ===== | ||
| + | |||
| + | Typische Probleme: | ||
| + | * Datei existiert nicht / falscher Pfad (Node.js: ENOENT) | ||
| + | * JSON ist syntaktisch kaputt (fehlendes Komma, falsche Anfuehrungszeichen) | ||
| + | * Im Browser: CORS-Probleme oder HTTP-Fehler | ||
| + | |||
| + | **Test-Script für Node.js** | ||
| + | |||
| + | const fs = require(" | ||
| + | // | ||
| + | try { | ||
| + | const text = fs.readFileSync(" | ||
| + | const daten = JSON.parse(text); | ||
| + | console.log(" | ||
| + | console.log(JSON.stringify(daten, | ||
| + | } catch (err) { | ||
| + | if (err.code === " | ||
| + | console.error(" | ||
| + | } else if (err.name === " | ||
| + | console.error(" | ||
| + | } else { | ||
| + | console.error(" | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | ---- | ||
| + | [[https:// | ||