JSON-Verarbeitung in Node.js: vollständige Anleitung
JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das auf der Syntax von JavaScript-Objekten basiert. In der Node.js-Umgebung ist die Arbeit mit JSON eine alltägliche Aufgabe: von Konfigurationsdateien bis hin zu API-Anfragen. In diesem Artikel werden wir alle Aspekte der JSON-Verarbeitung im Detail behandeln, einschließlich Parsen, Serialisierung, Validierung und Arbeit mit großen Dateien.
Grundlegende Methoden: JSON.parse() und JSON.stringify()
Die beiden wichtigsten Methoden für die Arbeit mit JSON sind direkt in JavaScript integriert. Sie sind global verfügbar und erfordern keine Installation zusätzlicher Bibliotheken.
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. Wenn der String ungültiges JSON enthält, wird eine SyntaxError-Ausnahme ausgelöst.
const jsonString = '{"name": "Anna", "age": 28, "isStudent": false}';const user = JSON.parse(jsonString);console.log(user.name); // "Anna"console.log(user.age); // 28Als zweiten optionalen Parameter kann eine Reviver-Funktion übergeben werden, die es ermöglicht, Werte während des Parsens zu modifizieren:
const json = '{"year": "2024", "price": "1500.50"}';const data = JSON.parse(json, (key, value) => { if (key === 'price') return parseFloat(value); if (key === 'year') return parseInt(value); return value;});console.log(typeof data.price); // "number"JSON.stringify() – Umwandlung eines Objekts in einen String
Die Methode JSON.stringify() macht das Gegenteil: Sie wandelt ein Objekt oder einen Wert in einen JSON-String um. Sie akzeptiert bis zu drei Argumente: den Wert, eine Ersetzungsfunktion oder ein Array von Schlüsseln und die Anzahl der Leerzeichen für die Formatierung.
const user = { name: "Ivan", age: 32, skills: ["JS", "Node", "Python"]};
// Ohne Formatierungconsole.log(JSON.stringify(user));// {"name":"Ivan","age":32,"skills":["JS","Node","Python"]}
// Mit Formatierung (2 Leerzeichen)console.log(JSON.stringify(user, null, 2));/*{ "name": "Ivan", "age": 32, "skills": [ "JS", "Node", "Python" ]}*/Das zweite Argument kann ein Array von Schlüsseln zur Filterung sein:
console.log(JSON.stringify(user, ['name', 'age']));// {"name":"Ivan","age":32}Arbeit mit JSON-Dateien in Node.js
In Node.js müssen häufig JSON-Dateien gelesen und geschrieben werden. Dazu werden die Module fs (Dateisystem) verwendet.
Lesen einer JSON-Datei
const fs = require('fs');
// Synchrones Lesentry { const data = fs.readFileSync('config.json', 'utf8'); const config = JSON.parse(data); console.log(config.port);} catch (err) { console.error('Fehler beim Lesen der Datei:', err.message);}
// Asynchrones Lesenfs.readFile('config.json', 'utf8', (err, data) => { if (err) { console.error('Fehler:', err); return; } const config = JSON.parse(data); console.log(config.port);});Schreiben einer JSON-Datei
const fs = require('fs');
const settings = { theme: 'dark', language: 'de', fontSize: 14};
// Synchrones Schreibenfs.writeFileSync('settings.json', JSON.stringify(settings, null, 2));
// Asynchrones Schreibenfs.writeFile('settings.json', JSON.stringify(settings, null, 2), (err) => { if (err) console.error('Fehler beim Schreiben:', err); else console.log('Datei gespeichert');});JSON-Validierung
Vor der Verwendung von Daten sollte immer deren Gültigkeit überprüft werden. Der einfachste Weg ist, JSON.parse() in einen try-catch-Block zu packen. Für eine komplexere Strukturvalidierung können Bibliotheken verwendet werden.
Überprüfung mit try-catch
function safeJsonParse(str) { try { return { data: JSON.parse(str), error: null }; } catch (e) { return { data: null, error: e.me