JSON in Node.js: Vollständiger Leitfaden zur Datenverarbeitung
JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das sich zum De-facto-Standard für Web-APIs, Konfigurationsdateien und die Speicherung strukturierter Informationen entwickelt hat. In der Node.js-Umgebung ist die Arbeit mit JSON ein wesentlicher Bestandteil nahezu jeder Anwendung. In diesem Artikel betrachten wir alle Aspekte der JSON-Verarbeitung im Detail: vom grundlegenden Parsing bis zur fortgeschrittenen Stream-Verarbeitung.
1. Grundlagen: Parsing und Serialisierung
In Node.js werden für die Arbeit mit JSON zwei globale Methoden verwendet: JSON.parse() und JSON.stringify(). Sie sind ohne das Einbinden zusätzlicher Module verfügbar.
JSON.parse() — Umwandlung eines Strings in ein Objekt
Die Methode JSON.parse() nimmt einen JSON-String entgegen und gibt das entsprechende JavaScript-Objekt zurück. Wichtig ist, dass der String streng gültiges JSON sein muss.
const jsonString = '{"name": "Alice", "age": 30, "isAdmin": false}';const user = JSON.parse(jsonString);console.log(user.name); // Aliceconsole.log(typeof user); // objectDie Methode unterstützt auch ein zweites Argument – eine "Reviver"-Funktion, die es ermöglicht, Werte während des Parsings zu transformieren:
const data = '{"date": "2025-01-15T10:00:00Z"}';const parsed = JSON.parse(data, (key, value) => { if (key === 'date') return new Date(value); return value;});console.log(parsed.date instanceof Date); // trueJSON.stringify() — Umwandlung eines Objekts in einen String
Die Methode JSON.stringify() führt die umgekehrte Umwandlung durch – sie verwandelt ein JavaScript-Objekt in einen JSON-String.
const user = { name: 'Bob', age: 25, hobbies: ['coding', 'reading']};const json = JSON.stringify(user);console.log(json); // {"name":"Bob","age":25,"hobbies":["coding","reading"]}Die Methode akzeptiert drei Argumente: den Wert, eine Ersetzungsfunktion (replacer) und die Anzahl der Leerzeichen für die Formatierung (space):
const obj = { a: 1, b: 2, c: 3 };// Formatierte Ausgabe mit Einrückungenconsole.log(JSON.stringify(obj, null, 2));// {// "a": 1,// "b": 2,// "c": 3// }
// Filterung von Schlüsseln mit replacerconst filtered = JSON.stringify(obj, ['a', 'c'], 2);console.log(filtered);// {// "a": 1,// "c": 3// }2. Lesen und Schreiben von JSON-Dateien
In realen Anwendungen werden JSON-Daten oft in Dateien gespeichert. Für die Arbeit mit dem Dateisystem wird das integrierte Modul fs verwendet.
Synchrones Lesen und Schreiben
const fs = require('fs');const path = require('path');
const filePath = path.join(__dirname, 'config.json');
// Lesenconst rawData = fs.readFileSync(filePath, 'utf-8');const config = JSON.parse(rawData);console.log(config.port);
// Schreibenconst newConfig = { port: 3000, host: 'localhost' };fs.writeFileSync(filePath, JSON.stringify(newConfig, null, 2));Asynchrones Lesen und Schreiben (empfohlene Methode)
const fs = require('fs').promises;
async function readConfig() { try { const data = await fs.readFile('config.json', 'utf-8'); return JSON.parse(data); } catch (err) { console.error('Fehler beim Lesen der Datei:', err); throw err; }}
async function writeConfig(config) { await fs.writeFile('config.json', JSON.stringify(config, null, 2));}
// Verwendung(async () => { const config = await readConfig(); config.port = 4000; await writeConfig(config);})();3. JSON-Validierung
Manchmal muss überprüft werden, ob ein String gültiges JSON ist, ohne eine Ausnahme auszulösen. Der zuverlässigste Weg ist, JSON.parse() in einen try-catch-Block zu packen:
Auch in der Bibliothek
Event Bus und das Observer-Pattern in JavaScript (Node.js) — Erstellung flexibler ereignisgesteuerter Systeme
Hyper für Rust: Vollständige Anleitung mit Beispielen
Arbeiten mit Bildern in C# (.NET): Vollständiger Leitfaden
mapstructure für Go: Vollständige Anleitung mit Beispielen
Dask – Paralleles Rechnen mit Python
Empfehlungen