Arbeit mit JSON in Node.js: Von den Grundlagen bis zu fortgeschrittenen Techniken
JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat, das zum De-facto-Standard für Web-APIs und Konfigurationsdateien geworden ist. In Node.js ist die Arbeit mit JSON auf Kernebene integriert, was seine Verarbeitung schnell und bequem macht. In diesem Artikel werden wir alle Aspekte der Arbeit mit JSON behandeln: vom grundlegenden Parsing bis zur Verarbeitung großer Dateien mit Streams.
Grundlagen: JSON.parse() und JSON.stringify()
Zwei globale Methoden – JSON.parse() und JSON.stringify() – bilden die Grundlage der gesamten JSON-Arbeit in JavaScript.
JSON.parse() – Umwandlung eines Strings in ein Objekt
Die Methode JSON.parse() nimmt einen String im JSON-Format entgegen und gibt das entsprechende JavaScript-Objekt zurück. Wenn der String einen Syntaxfehler enthält, wird eine SyntaxError-Ausnahme ausgelöst.
const jsonString = '{"name": "Anna", "age": 30, "isAdmin": false}';const user = JSON.parse(jsonString);
console.log(user.name); // "Anna"console.log(user.age); // 30Der zweite optionale Parameter ist eine reviver-Funktion, die es ermöglicht, Werte während des Parsings zu transformieren:
const jsonString = '{"date": "2024-01-15T10:30:00Z", "count": "42"}';const obj = JSON.parse(jsonString, (key, value) => { if (key === 'date') return new Date(value); if (key === 'count') return parseInt(value, 10); return value;});
console.log(obj.date instanceof Date); // trueconsole.log(typeof obj.count); // "number"JSON.stringify() – Umwandlung eines Objekts in einen String
Die Methode JSON.stringify() macht das Gegenteil – sie wandelt ein JavaScript-Objekt in einen JSON-String um. Sie akzeptiert drei Parameter: den Wert, eine Ersetzungsfunktion (oder ein Schlüssel-Array) und die Anzahl der Leerzeichen für die Formatierung.
const user = { name: "Ivan", age: 25, roles: ["admin", "editor"], metadata: null};
// Basisanwendungconst json = JSON.stringify(user);console.log(json);// {"name":"Ivan","age":25,"roles":["admin","editor"],"metadata":null}
// Mit Formatierungconst prettyJson = JSON.stringify(user, null, 2);console.log(prettyJson);/*{ "name": "Ivan", "age": 25, "roles": ["admin", "editor"], "metadata": null}*/Die Ersetzungsfunktion ermöglicht das Filtern oder Transformieren von Werten:
const user = { name: "Petr", password: "secret123", age: 28 };
const safeJson = JSON.stringify(user, (key, value) => { if (key === 'password') return undefined; // Passwort entfernen return value;});
console.log(safeJson); // {"name":"Petr","age":28}Lesen und Schreiben von JSON-Dateien in Node.js
In realen Projekten werden JSON-Daten oft in Dateien gespeichert. Node.js stellt das Modul fs (file system) für die Arbeit mit dem Dateisystem bereit.
JSON aus einer Datei lesen
const fs = require('fs');
// Synchrones Lesentry { const data = fs.readFileSync('config.json', 'utf8'); const config = JSON.parse(data); console.log(config.port); // 3000} catch (err) { console.error('Fehler beim Lesen der Datei:', err.message);}
// Asynchrones Lesen (empfohlen)fs.readFile('config.json', 'utf8', (err, data) => { if (err) { console.error('Fehler:', err); return; } const config = JSON.parse(data); console.log(config);});JSON in eine Datei schreiben
const fs = require('fs');
const settings = { theme: "dark", language: "de", notifications: true};
// Schreiben mit Formatierungfs.writeFileSync('settings.json', JSON.stringify(settings, null, 2), 'utf8');console.log('Datei settings.json wurde erstellt');
// Asynchrones Schreibenfs.writeFile('settings.json', JSON.stringify(settings), (err) => { if (err) throw err; Auch in der Bibliothek
Doctrine ORM für PHP: Komplettguide mit Praxisbeispielen
Arbeit mit XML in TypeScript: Bibliotheken, Parsing und Erstellung von XML-Dokumenten
Arbeit mit XML in Rust: Bibliotheken quick-xml, roxmltree und serde_xml_rs
Arbeiten mit ZIP-Archiven in TypeScript: Bibliothek JSZip und Hilfsprogramme