Dies ist eine alte Version des Dokuments!


LU01c - JSON-Datei einlesen und ausgeben

JSON (JavaScript Object Notation) ist ein textbasiertes Datenformat fuer Datenaustausch, Konfigurationen und API-Antworten. In JavaScript ist JSON besonders bequem, weil es der Objekt-Notation sehr aehnelt.

Typische JSON-Struktur (Datei person.json):

{
    "name": "Anna",
    "alter": 30,
    "ist_aktiv": true,
    "hobbys": ["Lesen", "Radfahren"],
    "adresse": {
      "stadt": "Berlin",
      "plz": "10115"
    }
}

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 fs-Modul bietet uns verschiedene, sehr praktische Methoden wie readFileSync, die alle Werte aus der JSON-Datei in ein entsprechendes JS-Objekt einliest.

Funktion Zweck
fs.readFile() Datei asynchron lesen
fs.readFileSync() Datei synchron lesen
fs.writeFile() Datei speichern/anlegen
fs.mkdir() Ordner erstellen
fs.unlink() Datei loeschen
fs.existsSync() Pruefen, ob eine Datei existiert

einlesenSync.js

const fs = require("fs"); // nicht vergessen
//
// Datei einlesen
const jsonText = fs.readFileSync("person.json", "utf8");
//
// In Objekt umwandeln
const daten = JSON.parse(jsonText);
//
console.log(typeof daten); // object
console.log(daten);
//
// Einzelfelder ausgeben
console.log("Name:", daten.name);
console.log("Alter:", daten.alter);
console.log("Aktiv:", daten.ist_aktiv);
//
// Hobbys
console.log("Hobbys:");
daten.hobbys.forEach(hobby => console.log(" -", hobby));
//
// Adresse
console.log("Adresse:");
console.log("  Stadt:", daten.adresse.stadt);
console.log("  PLZ:", daten.adresse.plz);

einlesenAsync.js

const fs = require("fs");
//
// Asynchrones Einlesen
fs.readFile("person.json", "utf8", (err, data) => {
  if (err) {
    console.error("Fehler beim Lesen:", err);
    return;
  }
  //
  // JSON umwandeln
  const daten = JSON.parse(data);
  //
  console.log(typeof daten); // object
  console.log(daten);
  //
  console.log("Name:", daten.name);
  console.log("Alter:", daten.alter);
  console.log("Aktiv:", daten.ist_aktiv);
  //
  console.log("Hobbys:");
  daten.hobbys.forEach(hobby => console.log(" -", hobby));
  //
  console.log("Adresse:");
  console.log("  Stadt:", daten.adresse.stadt);
  console.log("  PLZ:", daten.adresse.plz);
});
console.log(daten.name);                   // Anna
console.log(daten.alter);                  // 30
console.log(daten.hobbys[0]);              // Lesen
console.log(daten.adresse.stadt);          // Berlin
//
// optionaler Zugriff mit optional chaining
console.log(daten.adresse?.stadt ?? "unbekannt");

Rohes Objekt:

console.log(daten);

Formatiert als JSON-String:

const jsonString = JSON.stringify(daten, null, 4);
console.log(jsonString);

Parameter bei JSON.stringify:

  1. Argument: das Objekt
  2. Argument: Replacer (meist null)
  3. Argument: Anzahl Leerzeichen fuer Einrueckung (4 = gut lesbar, nicht komplett uebertrieben)

einlesenAsyncFormatiert.js

const fs = require("fs");
//
// JSON einlesen (asynchron)
fs.readFile("person.json", "utf8", (err, data) => {
  if (err) {
    console.error("Fehler beim Lesen:", err);
    return;
  }
  //
  const daten = JSON.parse(data);
  //
  console.log("Original-Objekt:", daten);
  //
  // Objekt zurück in JSON-String wandeln
  const jsonString = JSON.stringify(daten, null, 2); // null,2 = schön formatiert
  //
  console.log("\nAls JSON-String:");
  console.log(jsonString);
  //
  // Optional: neue Datei schreiben
  fs.writeFile("person_copy.json", jsonString, (err) => {
    if (err) {
      console.error("Fehler beim Schreiben:", err);
      return;
    }
    console.log("\nDatei 'person_copy.json' wurde erstellt.");
  });
});

Volkan Demir

  • de/modul/m307/learningunits/lu01/03.1765351574.txt.gz
  • Zuletzt geändert: 2025/12/10 08:26
  • von vdemir