Einleitung zu JSON und seiner Rolle in JavaScript
JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das auf der JavaScript-Objektsyntax basiert. Trotz seiner Ursprünge ist JSON zu einem universellen Standard für die Übertragung strukturierter Daten zwischen Server und Client sowie für das Speichern von Konfigurationen und den Austausch von Informationen in Microservice-Architekturen geworden.
In der Node.js-Umgebung ist die Arbeit mit JSON eine alltägliche Aufgabe: vom Lesen von Konfigurationsdateien bis zur Verarbeitung von REST-API-Antworten. In diesem Artikel werden wir uns zwei Schlüsselmethoden im Detail ansehen — JSON.parse() und JSON.stringify(), und auch typische Fehler und Best Practices analysieren.
1. JSON parsen: Die JSON.parse()-Methode
Die Methode JSON.parse() wandelt einen JSON-formatierten String in ein JavaScript-Objekt um. Dies ist notwendig, wenn Sie Daten von einem Server, aus einer Datei oder von einer externen Quelle erhalten.
Grundlegende Syntax
const jsonString = '{"name": "Anna", "age": 30, "isStudent": false}';const user = JSON.parse(jsonString);console.log(user.name); // "Anna"console.log(user.age); // 30Fortgeschrittene Verwendung: Die Reviver-Funktion
Das zweite Argument von JSON.parse() kann eine Reviver-Funktion akzeptieren, mit der Sie Werte während des Parsens modifizieren können. Dies ist nützlich, um String-Daten in Date-Objekte umzuwandeln oder für die Datenvalidierung.
const jsonData = '{"date": "2024-01-15T10:30:00.000Z", "value": 42}';const parsed = JSON.parse(jsonData, (key, value) => { if (key === 'date') { return new Date(value); } return value;});console.log(parsed.date instanceof Date); // trueconsole.log(parsed.date.toLocaleDateString()); // "1/15/2024"Behandlung von Parsing-Fehlern
Ungültiges JSON wirft einen SyntaxError. Wickeln Sie den Aufruf von JSON.parse() immer in einen try...catch-Block ein:
function safeParse(jsonString) { try { return { data: JSON.parse(jsonString), error: null }; } catch (error) { console.error('JSON-Parsing-Fehler:', error.message); return { data: null, error: error.message }; }}
const result = safeParse('{"name": "Error"}');console.log(result.data.name); // "Error"2. Serialisierung zu JSON: Die JSON.stringify()-Methode
Die Methode JSON.stringify() führt die umgekehrte Aufgabe aus — sie wandelt ein JavaScript-Objekt in einen JSON-String um. Dies wird verwendet, wenn Daten an einen Server gesendet, ein Status gespeichert oder geloggt wird.
Grundlegende Syntax
const user = { name: 'Ivan', age: 25, skills: ['JavaScript', 'Node.js']};
const jsonString = JSON.stringify(user);console.log(jsonString);// {"name":"Ivan","age":25,"skills":["JavaScript","Node.js"]}Formatierungsparameter
Das dritte Argument von JSON.stringify() ermöglicht es Ihnen, Einrückungen für eine lesbare Ausgabe festzulegen. Dies ist besonders nützlich beim Schreiben in Dateien oder beim Debuggen.
const config = { server: { port: 3000, host: 'localhost' }, database: { host: 'db.example.com', port: 5432 }};
// Kompakte Ausgabeconsole.log(JSON.stringify(config));
// Lesbare Ausgabe mit 2-Leerzeichen-Einrückungconsole.log(JSON.stringify(config, null, 2));// {// "server": {// "port": 3000,// "host": "localhost"// },// ...// }Filtern von Eigenschaften mit dem Replacer
Das zweite Argument ist ein Array oder eine Funktion, die bestimmt, welche Eigenschaften in den resultierenden String aufgenommen werden sollen.
const user = { id: 1, name: 'Maria', email: 'maria@example.com', password: 'secret123', role: 'admin'};
// Ausschluss vertraulicher Datenconst safeUser = JSON.stringify(user, ['id', 'name', 'email', 'role']);console.log(safeUser);// {"id":1,"name":"Maria","email":"maria@exa