JSON-Grundlagen
JSON (JavaScript Object Notation) ist ein leichtgewichtiges Datenaustauschformat, das sowohl für Menschen leicht lesbar als auch für Maschinen einfach zu analysieren und zu generieren ist. In modernen Webanwendungen wie dem MERN Stack ist JSON das Standardformat für den Datenaustausch zwischen Client und Server.
Was ist JSON?
Abschnitt betitelt „Was ist JSON?“JSON ist ein textbasiertes Format, das ursprünglich von JavaScript abgeleitet wurde, aber inzwischen sprachunabhängig ist. Es wird verwendet, um strukturierte Daten darzustellen und folgt einer einfachen Syntax:
- Daten werden als Schlüssel-Wert-Paare dargestellt
- Daten sind durch Kommas getrennt
- Objekte werden durch geschweifte Klammern
{}umschlossen - Arrays werden durch eckige Klammern
[]umschlossen
JSON-Syntaxregeln
Abschnitt betitelt „JSON-Syntaxregeln“Die Syntax von JSON folgt einigen einfachen, aber strikten Regeln:
1. Datentypen in JSON
Abschnitt betitelt „1. Datentypen in JSON“JSON unterstützt die folgenden Datentypen:
- String: Text in doppelten Anführungszeichen:
"Hallo Welt" - Number: Zahlen ohne Anführungszeichen:
42oder3.14 - Boolean:
trueoderfalseohne Anführungszeichen - Array: Eine geordnete Liste von Werten:
[1, 2, 3]oder["rot", "grün", "blau"] - Object: Eine ungeordnete Sammlung von Schlüssel-Wert-Paaren:
{"name": "Max", "alter": 30} - null: Repräsentiert einen leeren Wert:
null
2. Grundlegende Formatierung
Abschnitt betitelt „2. Grundlegende Formatierung“- Objekt: Ein JSON-Objekt beginnt und endet mit geschweiften Klammern
{} - Array: Ein JSON-Array beginnt und endet mit eckigen Klammern
[] - Schlüssel: Müssen in doppelten Anführungszeichen stehen und sind Strings
- Werte: Können Strings, Zahlen, Objekte, Arrays, Booleans oder null sein
- Paare: Schlüssel und Wert werden durch einen Doppelpunkt
:getrennt - Mehrere Einträge: Werden durch Kommas
,getrennt
3. Beispiel eines JSON-Objekts
Abschnitt betitelt „3. Beispiel eines JSON-Objekts“{ "name": "Max Mustermann", "alter": 30, "istAktiv": true, "interessen": ["Programmieren", "Lesen", "Sport"], "adresse": { "strasse": "Musterstrasse 123", "stadt": "Berlin", "plz": "10115" }, "kontakt": null}4. Wichtige Einschränkungen
Abschnitt betitelt „4. Wichtige Einschränkungen“- Kommentare sind nicht erlaubt
- Schlüssel müssen immer in doppelten Anführungszeichen stehen
- Einfache Anführungszeichen sind nicht erlaubt
- Schlüssel sollten eindeutig sein (innerhalb desselben Objekts)
- Nachgestellte Kommas sind nicht erlaubt (z.B.
[1, 2, 3,]ist ungültig)
JSON vs. JavaScript-Objekte
Abschnitt betitelt „JSON vs. JavaScript-Objekte“Obwohl JSON von JavaScript abgeleitet ist, gibt es wichtige Unterschiede:
| JSON | JavaScript-Objekte |
|---|---|
| Schlüssel müssen in doppelten Anführungszeichen stehen | Schlüssel können ohne Anführungszeichen sein |
| Unterstützt nur eine begrenzte Anzahl von Datentypen | Unterstützt zusätzliche Datentypen (z.B. Funktionen, Dates) |
| Kann keine Methoden enthalten | Kann Methoden (Funktionen) enthalten |
| Kann nicht auf Variablen verweisen | Kann Variablen und Referenzen verwenden |
{"name": "Max"} | {name: "Max"} |
JSON in JavaScript verarbeiten
Abschnitt betitelt „JSON in JavaScript verarbeiten“JavaScript bietet eingebaute Methoden zum Konvertieren zwischen JSON-Strings und JavaScript-Objekten:
JSON.parse(): Von String zu Objekt
Abschnitt betitelt „JSON.parse(): Von String zu Objekt“Die Methode JSON.parse() wandelt einen JSON-String in ein JavaScript-Objekt um:
// JSON-Stringconst jsonString = '{"name": "Max", "alter": 30, "istAktiv": true}';
// Konvertierung zu JavaScript-Objektconst person = JSON.parse(jsonString);
// Zugriff auf Eigenschaftenconsole.log(person.name); // Ausgabe: Maxconsole.log(person.alter); // Ausgabe: 30console.log(person.istAktiv); // Ausgabe: trueJSON.stringify(): Von Objekt zu String
Abschnitt betitelt „JSON.stringify(): Von Objekt zu String“Die Methode JSON.stringify() wandelt ein JavaScript-Objekt in einen JSON-String um:
// JavaScript-Objektconst person = { name: "Anna", alter: 25, hobbys: ["Musik", "Reisen"]};
// Konvertierung zu JSON-Stringconst jsonString = JSON.stringify(person);
console.log(jsonString);// Ausgabe: {"name":"Anna","alter":25,"hobbys":["Musik","Reisen"]}
// Formatierte Ausgabe (mit Einrückung)const formattedJson = JSON.stringify(person, null, 2);console.log(formattedJson);/*Ausgabe:{ "name": "Anna", "alter": 25, "hobbys": [ "Musik", "Reisen" ]}*/Fehlerbehandlung bei JSON-Operationen
Abschnitt betitelt „Fehlerbehandlung bei JSON-Operationen“Bei der Arbeit mit JSON können Fehler auftreten, besonders wenn die Syntax nicht korrekt ist:
try { // Versuche, ungültigen JSON-String zu parsen const invalidJson = '{"name": "Max", "alter": 30,}'; // Ungültiges nachgestelltes Komma const person = JSON.parse(invalidJson);} catch (error) { console.error("JSON-Fehler:", error.message); // Ausgabe: JSON-Fehler: Unexpected token } in JSON at position 27}JSON in der MERN-Stack-Kommunikation
Abschnitt betitelt „JSON in der MERN-Stack-Kommunikation“Im MERN Stack wird JSON für die Datenkommunikation zwischen allen Komponenten verwendet:
- React (Frontend) sendet und empfängt Daten als JSON
- Express (Backend) verarbeitet JSON-Anfragen und sendet JSON-Antworten
- MongoDB speichert Daten in einem BSON-Format (binäres JSON)
// Beispiel für eine Fetch-Anfrage, die JSON sendet und empfängtfetch('https://api.example.com/users', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: 'Max Mustermann', email: 'max@example.com' })}).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Fehler:', error));Übung: JSON mit einer öffentlichen API
Abschnitt betitelt „Übung: JSON mit einer öffentlichen API“Zusammenfassung
Abschnitt betitelt „Zusammenfassung“JSON ist ein vielseitiges und weit verbreitetes Datenaustauschformat:
- Es verwendet eine einfache, lesbare Syntax mit Schlüssel-Wert-Paaren
- Es unterstützt verschiedene Datentypen: Strings, Zahlen, Booleans, Arrays, Objekte und null
- In JavaScript kann JSON mit
JSON.parse()undJSON.stringify()verarbeitet werden - Im MERN Stack ist JSON das Standardformat für die Datenkommunikation zwischen allen Komponenten
Durch das Verständnis von JSON können Sie effektiv mit APIs kommunizieren und Daten zwischen verschiedenen Teilen Ihrer Anwendung austauschen.
Im nächsten Kapitel werden wir uns mit API-Kommunikation und der Fetch API befassen, um mit JSON-Daten von externen Quellen zu arbeiten.