Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung | |||
| de:modul:m307:learningunits:lu02:03 [2026/02/09 13:40] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | de:modul:m307:learningunits:lu02:03 [2026/02/09 13:40] (aktuell) – ↷ Seite von de:modul:m307:learningunits:lu01:03 nach de:modul:m307:learningunits:lu02:03 verschoben vdemir | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== LU02c - JSON-Datei einlesen und ausgeben ====== | ||
| + | ===== Was ist JSON? ===== | ||
| + | |||
| + | JSON (JavaScript Object Notation) ist ein textbasiertes Datenformat fuer Datenaustausch, | ||
| + | In JavaScript ist JSON besonders bequem, weil es der Objekt-Notation sehr aehnelt. | ||
| + | |||
| + | **Typische JSON-Struktur (Datei person.json): | ||
| + | |||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | | ||
| + | ===== Das fs-Modul ===== | ||
| + | Grundsätzlich benötige wir das Modul //fs// (File System) um Daten aus Files ins JavaScript einlesen zu können. Damit müssem wir die Funktionen zum Einlesen der Daten aus der JSON-Datei nicht selbst schreiben. Das // | ||
| + | |||
| + | ^ Funktion | ||
| + | | fs.readFile() | ||
| + | | fs.readFileSync() | Datei synchron lesen | | ||
| + | | fs.writeFile() | ||
| + | | fs.mkdir() | ||
| + | | fs.unlink() | ||
| + | | fs.existsSync() | ||
| + | |||
| + | |||
| + | ===== Synchrones Einlesen ===== | ||
| + | |||
| + | **einlesenSync.js** | ||
| + | |||
| + | const fs = require(" | ||
| + | // | ||
| + | // Datei einlesen | ||
| + | const jsonText = fs.readFileSync(" | ||
| + | // | ||
| + | // In Objekt umwandeln | ||
| + | const daten = JSON.parse(jsonText); | ||
| + | // | ||
| + | console.log(typeof daten); // object | ||
| + | console.log(daten); | ||
| + | // | ||
| + | // Einzelfelder ausgeben | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | // | ||
| + | // Hobbys | ||
| + | console.log(" | ||
| + | daten.hobbys.forEach(hobby => console.log(" | ||
| + | // | ||
| + | // Adresse | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | |||
| + | |||
| + | ===== Asynchrones Einlesen===== | ||
| + | ** einlesenAsync.js** | ||
| + | |||
| + | const fs = require(" | ||
| + | // | ||
| + | // Asynchrones Einlesen | ||
| + | fs.readFile(" | ||
| + | if (err) { | ||
| + | console.error(" | ||
| + | return; | ||
| + | } | ||
| + | // | ||
| + | // JSON umwandeln | ||
| + | const daten = JSON.parse(data); | ||
| + | // | ||
| + | console.log(typeof daten); // object | ||
| + | console.log(daten); | ||
| + | // | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | // | ||
| + | console.log(" | ||
| + | daten.hobbys.forEach(hobby => console.log(" | ||
| + | // | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | }); | ||
| + | ===== Auf einzelne Werte zugreifen ===== | ||
| + | |||
| + | console.log(daten.name); | ||
| + | console.log(daten.alter); | ||
| + | console.log(daten.hobbys[0]); | ||
| + | console.log(daten.adresse.stadt); | ||
| + | // | ||
| + | // optionaler Zugriff mit optional chaining | ||
| + | console.log(daten.adresse? | ||
| + | |||
| + | ===== JSON formatiert ausgeben ===== | ||
| + | |||
| + | **Rohes Objekt:** | ||
| + | |||
| + | console.log(daten); | ||
| + | | ||
| + | **Formatiert als JSON-String: | ||
| + | |||
| + | const jsonString = JSON.stringify(daten, | ||
| + | console.log(jsonString); | ||
| + | | ||
| + | **Parameter bei JSON.stringify: | ||
| + | - Argument: das Objekt | ||
| + | - Argument: Replacer (meist null) | ||
| + | - Argument: Anzahl Leerzeichen fuer Einrueckung (4 = gut lesbar, nicht komplett uebertrieben) | ||
| + | |||
| + | **einlesenAsyncFormatiert.js** | ||
| + | |||
| + | const fs = require(" | ||
| + | // | ||
| + | fs.readFile(" | ||
| + | if (err) { | ||
| + | console.error(" | ||
| + | return; | ||
| + | } | ||
| + | // | ||
| + | const daten = JSON.parse(data); | ||
| + | // | ||
| + | console.log(typeof daten); // object | ||
| + | // | ||
| + | console.log(" | ||
| + | console.log(JSON.stringify(daten, | ||
| + | // | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | // | ||
| + | console.log(" | ||
| + | daten.hobbys.forEach(hobby => console.log(" | ||
| + | // | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | console.log(" | ||
| + | }); | ||
| + | |||
| + | |||
| + | ---- | ||
| + | [[https:// | ||