JavaScript Object Notation (JSON)
JSON (JavaScript Object Notation)
JSON (JavaScript Object Notation) ist ein kompaktes, textbasiertes Datenformat zur strukturierten Darstellung von Informationen. Es wird vor allem für den Datenaustausch zwischen Systemen verwendet, insbesondere in Web-APIs. JSON ist menschenlesbar, leichtgewichtig und lässt sich effizient von Maschinen verarbeiten.
Eigenschaften
- **Leichtgewichtig:** Geringer Overhead gegenüber XML.
- **Menschen- und maschinenlesbar:** Klare, einfache Struktur.
- **Sprachunabhängig:** Obwohl der Ursprung in JavaScript liegt, wird JSON in fast allen Programmiersprachen unterstützt.
- **Widespread Standard:** De facto Standard in modernen Web-Architekturen und Microservices.
Grundstruktur
JSON stellt Daten mit:
- **Objekten** (Schlüssel-Wert-Paare)
- **Arrays** (geordneten Listen)
- **Primitiven Datentypen**
dar.
Beispiel
{
"name": "Alice",
"alter": 30,
"interessen": ["Musik", "Lesen", "Reisen"],
"aktiv": true
}
Datentypen
JSON unterstützt folgende Datentypen:
| Datentyp | Beispiel | Beschreibung |
|---|---|---|
| String | `"Hallo"` | Text in Anführungszeichen |
| Number | `42` oder `3.14` | Ganz- oder Gleitkommazahl |
| Boolean | `true`, `false` | Logischer Wert |
| Null | `null` | Leerer oder unbekannter Wert |
| Object | `{"x": 1, "y": 2}` | Sammlung von Schlüssel-Wert-Paaren |
| Array | `[1, 2, 3]` | Geordnete Liste |
JSON vs. JavaScript
JSON sieht JavaScript-Objekten ähnlich, hat aber strengere Regeln:
- Nur doppelte Anführungszeichen `"` erlaubt.
- Keine Kommentare erlaubt.
- Schlüssel müssen Strings sein.
Parsing und Serialisierung
JSON wird in Programmiersprachen meist über Standardbibliotheken verarbeitet.
In JavaScript
// JSON-String → Objekt
const obj = JSON.parse('{"name":"Alice"}');
// Objekt → JSON-String
const jsonText = JSON.stringify(obj);
In Python
import json
obj = json.loads('{"name": "Alice"}')
text = json.dumps(obj)
In C# (.NET)
using System.Text.Json;
var obj = JsonSerializer.Deserialize<Dictionary<string, object>>("{\"name\": \"Alice\"}");
var text = JsonSerializer.Serialize(obj);
JSON-Schema
JSON-Schema dient der **Validierung** von JSON-Datenstrukturen.
Beispielschema
{
"type": "object",
"properties": {
"name": { "type": "string" },
"alter": { "type": "number" }
},
"required": ["name"]
}
Einsatzgebiete
JSON wird verwendet in:
- **REST-APIs**
- **Microservices-Kommunikation**
- **Webanwendungen (AJAX, Fetch, WebSockets)**
- **Konfigurationsdateien** (z. B. `package.json`, `appsettings.json`)
- **NoSQL-Datenbanken** (z. B. MongoDB, CouchDB)
Vorteile
- Sehr einfach zu lesen und zu erstellen.
- Weniger Overhead als XML.
- Hervorragend für Web-basierte Systeme geeignet.
- Plattform- und sprachunabhängig.
Nachteile
- Keine Kommentare im Standard erlaubt.
- Weißraum-sensitiv bei manueller Bearbeitung.
- Weniger geeignet für hochkomplexe strukturierte Dokumente (z. B. technische Standards), für die XML teilweise besser geeignet ist.
Vergleich mit XML
| Kriterium | JSON | XML |
|---|---|---|
| Lesbarkeit | Einfach, kompakt | Ausführlich, strukturreich |
| Struktur | Key-Value-basiert | Tag-basiert, flexibler |
| Datenvalidierung | JSON-Schema (jünger) | XSD/DTD (ausgereift) |
| Einsatz | Web-APIs, Apps, Microservices | Enterprise-Systeme, Dokumentstandards |
Zusammenfassung
- JSON ist ein leichtgewichtiges, plattformunabhängiges Format für strukturierten Datenaustausch.
- Es wird heute als **Standardformat** in Web- und API-Entwicklungen verwendet.
- JSON ist einfach zu lesen, zu erzeugen und in allen gängigen Sprachen verarbeitbar.