Einführung in JSON und JavaScript
\nJSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das zum Standard für die Kommunikation zwischen Client und Server in Webanwendungen geworden ist. Aufgrund seiner Einfachheit und Lesbarkeit wird JSON überall eingesetzt: von Konfigurationsdateien bis hin zu API-Anfragen. In diesem Artikel werden wir uns damit befassen, wie man mit JSON in der Node.js-Umgebung arbeitet, das Parsen (Umwandlung eines Strings in ein Objekt) und die Serialisierung (Umwandlung eines Objekts in einen String) erlernen. Das Material richtet sich an Anfänger, die bereits mit den Grundlagen von JavaScript vertraut sind.
\n\nWas ist JSON und wozu wird es benötigt?
\nJSON ist ein textbasiertes Format, das auf der Syntax von JavaScript-Objekten basiert. JSON ist jedoch lediglich ein String, der über ein Netzwerk übertragen oder in einer Datei gespeichert werden kann. Die grundlegenden Datentypen in JSON sind:
\n- \n
- Zeichenketten (in doppelten Anführungszeichen) \n
- Zahlen (ganze Zahlen und Gleitkommazahlen) \n
- Boolesche Werte (true/false) \n
- null \n
- Arrays \n
- Objekte (Schlüssel in doppelten Anführungszeichen) \n
Beispiel für einen gültigen JSON-String:
\n{\n "name": "Anna",\n "age": 28,\n "isStudent": false,\n "skills": ["JavaScript", "Node.js"],\n "address": null\n}\nIm Gegensatz zu einem normalen JavaScript-Objekt erfordert JSON eine strenge Syntax: Alle Schlüssel und Zeichenkettenwerte werden in doppelte Anführungszeichen gesetzt, und Kommentare sind nicht erlaubt.
\n\nJSON parsen: JSON.parse()
\nZur Umwandlung eines JSON-Strings in ein JavaScript-Objekt wird die Methode JSON.parse() verwendet. Dies ist notwendig, wenn Sie Daten vom Server erhalten, eine Datei lesen oder Benutzereingaben verarbeiten.
Einfaches Beispiel für das Parsen
\nconst jsonString = '{"name": "Ivan", "age": 30}';\nconst user = JSON.parse(jsonString);\nconsole.log(user.name); // Ivan\nconsole.log(user.age); // 30\n\nParsen eines Arrays
\nconst jsonArray = '[1, 2, "drei", true]';\nconst arr = JSON.parse(jsonArray);\nconsole.log(arr[2]); // drei\n\nFehlerbehandlung beim Parsen
\nUngültiges JSON löst eine SyntaxError-Ausnahme aus. Verwenden Sie bei der Arbeit mit unsicheren Daten immer try...catch:
try {\n const invalid = '{"name": "Fehler}';\n const result = JSON.parse(invalid);\n} catch (error) {\n console.error('Parsing-Fehler:', error.message);\n}\nSie können auch ein zweites Argument übergeben – eine reviver-Funktion, die es ermöglicht, Werte während des Parsens zu transformieren:
const json = '{"date": "2024-01-15", "count": "42"}';\nconst obj = JSON.parse(json, (key, value) => {\n if (key === 'date') return new Date(value);\n if (key === 'count') return Number(value);\n return value;\n});\nconsole.log(obj.date.getFullYear()); // 2024\nconsole.log(typeof obj.count); // number\n\nJSON serialisieren: JSON.stringify()
\nDer umgekehrte Prozess – die Umwandlung eines JavaScript-Objekts in einen JSON-String – wird mit JSON.stringify() durchgeführt. Dies ist erforderlich, um Daten an den Server zu senden, in einer Datei zu speichern oder zu protokollieren.
Einfaches Beispiel für die Serialisierung
\nconst user = {\n name: 'Maria',\n age: 25,\n isAdmin: true\n};\nconst json = JSON.stringify(user);\nconsole.log(json);\n// {"name":"Maria","age":25,"isAdmin":true}\n\nAusgabe formatieren
\nDie Methode akzeptiert drei Parameter: den Wert, eine Ersetzungsfunktion (oder ein Array von Feldern) und die Anzahl der Leerzeichen für Einrückungen:
\nconst data = {\n id: 1,\n title: 'Artikel',\n tags: ['js', 'json']\n};\n// Mit Einrückungen von 2 Leerzeichen\nconst prettyJson = JSON.stringify(data, null, 2);\nconsole.log(prettyJson);\n/* Ausgabe:\n{\n "id": 1,\n "title": "Artikel",\n "tags": [\n "js",\n "json"\n ]\n}\n*/\n\nFelder filtern
\nDer zweite Parameter kann ein Array von Schlüsseln sein, die in das Ergebnis aufgenommen werden sollen:
\nconst user = {\n name: 'Peter',\n password: 'secret12