JSON (RFC 8259)
JavaScript Object Notation – Der Standard für Datenaustausch im Web
JSON
JSON ist das meistgenutzte Datenformat für Web-APIs, Konfigurationsdateien und Datenaustausch zwischen Anwendungen. Es ist leichtgewichtig, für Menschen lesbar und einfach für Maschinen zu parsen.
Was ist JSON?
JSON (JavaScript Object Notation) ist ein leichtgewichtiges, textbasiertes Datenformat, das ursprünglich aus JavaScript stammt, aber sprachunabhängig ist. Es wird verwendet, um strukturierte Daten zwischen Servern und Webanwendungen auszutauschen – oft als Alternative zu XML.
{
"name": "Max Mustermann",
"alter": 30,
"verheiratet": false,
"hobbys": ["Lesen", "Schwimmen"],
"adresse": {
"stadt": "Berlin",
"plz": 10115
},
"kinder": null
}
RFC 8259 definiert das Format und ersetzt die älteren RFCs 4627 und 7159. Es ist der aktuelle Standard für JSON.
Veröffentlicht: Dezember 2017 | Status: Internet Standard | Kategorie: Standards Track
Geschichte von JSON
Douglas Crockford spezifiziert JSON erstmals. Der Name "JSON" wird geprägt.
RFC 4627 – JSON wird offiziell als IETF-Standard anerkannt.
ECMA-404 – JSON wird auch von Ecma International standardisiert.
RFC 7159 – Überarbeitung des Standards, Zusammenführung mit ECMA-404.
RFC 8259 – Aktuelle Version, die RFC 7159 ersetzt. Kleinere Klarstellungen.
Wichtige Fakten
- Typ: Datenformat, textbasiert
- Standardisierung: IETF RFC 8259, ECMA-404
- MIME-Typ: application/json
- Dateiendung: .json
- Entwickler: Douglas Crockford
Offizielle Quellen
Wo wird JSON verwendet?
Web-APIs
REST-APIs verwenden JSON als primäres Austauschformat – z.B. Twitter, GitHub, Google APIs.
Konfigurationsdateien
Viele moderne Tools nutzen JSON für Konfigurationen (z.B. npm package.json, VS Code settings).
Datenbanken
NoSQL-Datenbanken wie MongoDB speichern Daten im JSON-ähnlichen BSON-Format.
Datenaustausch
Zwischen verschiedenen Programmiersprachen und Systemen.
JSON-Datentypen
JSON kennt nur wenige, aber dafür klar definierte Datentypen:
| Typ | Beispiel | Beschreibung |
|---|---|---|
| String | "Hallo Welt" |
Zeichenkette in doppelten Anführungszeichen |
| Number | 42, 3.14, -10 |
Ganzzahl oder Gleitkommazahl (keine Unterscheidung) |
| Boolean | true, false |
Wahrheitswerte |
| Null | null |
Leerer Wert |
| Object | { "key": "value" } |
Ungeordnete Sammlung von Schlüssel-Wert-Paaren |
| Array | [1, 2, 3] |
Geordnete Liste von Werten |
Wichtig: JSON kennt keine Datums- oder Zeit-Typen. Datumsangaben werden meist als ISO-String gespeichert: "2024-01-15T14:30:00Z"
JSON-Syntaxregeln
Schlüssel in Anführungszeichen
Alle Schlüssel müssen in doppelten Anführungszeichen stehen.
{ "name": "Max" } ✅
{ name: "Max" } ❌ (ungültig)
Keine Kommentare
JSON erlaubt keine Kommentare – im Gegensatz zu YAML oder XML.
Keine nachfolgenden Kommas
Nach dem letzten Element in einem Objekt oder Array darf kein Komma stehen.
[1, 2, 3] ✅
[1, 2, 3,] ❌ (ungültig)
Unicode-Unterstützung
JSON unterstützt Unicode-Zeichen (UTF-8, UTF-16, UTF-32).
{ "name": "Müller" } ✅
JSON vs. JavaScript-Objekte
JSON (streng)
- Schlüssel müssen in "..."
- Strings in "..."
- Keine Funktionen
- Keine undefined
- Keine Kommentare
- Nur die 6 Datentypen
JavaScript-Objekt (flexibel)
- Schlüssel ohne Anführungszeichen erlaubt
- Strings in ' oder "
- Funktionen als Werte
- undefined möglich
- Kommentare erlaubt
- Zusätzliche Typen (Date, Regex)
const person = {
name: 'Max', // Schlüssel ohne Anführungszeichen, einfache Anführungszeichen
alter: 30,
begruessen: function() { console.log('Hallo'); } // Funktion
};
JSON-Beispiele aus der Praxis
API-Antwort (Benutzerprofil)
"status": "success",
"code": 200,
"data": {
"id": 12345,
"username": "max_mustermann",
"email": "max@example.com",
"created_at": "2024-01-15T10:30:00Z"
}
}
package.json (npm)
"name": "mein-projekt",
"version": "1.0.0",
"description": "Ein Beispielprojekt",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"express": "^4.18.0"
}
}
JSON-Validierung
JSON muss strengen Regeln folgen. Hier ein Beispiel für ungültiges JSON:
{
name: "Max", // ❌ Schlüssel ohne Anführungszeichen
"alter": 30,
"hobbys": ["Lesen", "Schwimmen",] // ❌ Nachfolgendes Komma
}
Richtig wäre:
"name": "Max",
"alter": 30,
"hobbys": ["Lesen", "Schwimmen"]
}
JSON vs. andere Formate
| Format | Vorteile | Nachteile | Einsatz |
|---|---|---|---|
| JSON | Leicht, lesbar, weit verbreitet | Keine Kommentare, kein Schema | APIs, Web, Konfiguration |
| XML | Schema-Unterstützung (XSD), Namespaces | Schwerfällig, mehr Overhead | Alte Systeme, Dokumente |
| YAML | Lesbarer, Kommentare, weniger Syntax | Einrückungsabhängig, komplexer | Konfigurationsdateien |
| Protobuf | Kompakt, schnell, typsicher | Nicht lesbar, Schema nötig | Hochleistungs-APIs (gRPC) |
Wussten Sie schon?
JSON wurde 2001 von Douglas Crockford spezifiziert, als er bei der Firma State Software arbeitete. Er "entdeckte" das Format nicht wirklich neu, sondern standardisierte eine bereits bestehende Praxis – die Verwendung von JavaScript-Objektliteralen für Datenaustausch. Der Name "JSON" wurde von ihm geprägt.
Die offizielle Spezifikation passt auf eine einzelne Seite – ein bewusstes Designziel für Einfachheit.
Verwandte Themen
JSON-Daten formatieren, validieren und analysieren.
Zum JSON FormatterWie Web-APIs mit JSON arbeiten.
Zu den Web-APIsJSON.parse() und JSON.stringify() in JavaScript.
Zu JavaScript