Was ist JSON? Ein kompletter Leitfaden für Einsteiger
Alles Wichtige über JSON — das Datenaustauschformat des modernen Webs — von der Syntax bis zum Einsatz in APIs.
JSON in 30 Sekunden
JSON (JavaScript Object Notation) ist ein leichtgewichtiges, textbasiertes Datenformat, das zur Lingua franca des Datenaustauschs im Web geworden ist. Wenn Sie jemals eine REST-API aufgerufen, eine package.json-Datei geöffnet oder mit MongoDB gearbeitet haben, haben Sie bereits JSON verwendet — wahrscheinlich ohne viel darüber nachzudenken.
Im Kern ist JSON nur eine Möglichkeit, strukturierte Daten als einfachen Text darzustellen. Es ist größtenteils menschenlesbar, maschinenlesbar (sehr einfach) und wird von praktisch jeder Programmiersprache unterstützt. Diese Kombination ist genau der Grund, warum es gewonnen hat.
Eine kurze Geschichte
JSON wurde in den frühen 2000er Jahren von Douglas Crockford populär gemacht. Er hat es nicht wirklich "erfunden" — die Syntax ist ein Teilmenge von JavaScript, das seit 1999 existiert — aber er gab ihm einen Namen, eine Website (json.org) und eine Spezifikation. Manchmal zählt das Branding mehr als die Erfindung.
Das Format wurde formal in RFC 4627 (2006) spezifiziert und später durch RFC 8259 (2017) und den ECMA-404-Standard ersetzt. Aber ehrlich gesagt, die Spezifikation hat sich seit dem Anfang nicht viel verändert. Die Einfachheit von JSON ist seine größte Stärke — es gibt einfach nicht viel zu ändern.
Bevor JSON die Oberhand gewann, war XML das dominierende Datenformat für den Austausch. Wenn Sie sehen möchten, warum Entwickler zu JSON strömten, schauen Sie sich unseren JSON vs XML Vergleich an.
Die 6 JSON-Datentypen
JSON unterstützt genau sechs Datentypen. Nicht mehr, nicht weniger. Diese Einschränkung ist absichtlich — sie hält die Dinge einfach und interoperabel zwischen den Sprachen.
| Typ | Beschreibung | Beispiel |
|---|---|---|
| String | Text, der in doppelte Anführungszeichen eingeschlossen ist | "hallo welt" |
| Number | Ganzzahl oder Fließkommazahl (kein Hex, kein NaN, keine Unendlichkeit) | 42, 3.14, -7 |
| Boolean | Literale true oder false | true |
| Null | Stellt einen leeren oder unbekannten Wert dar | null |
| Object | Ungeordnete Sammlung von Schlüssel-Wert-Paaren | {"name": "Ada"} |
| Array | Geordnete Liste von Werten | [1, 2, 3] |
Beachten Sie, was nicht auf der Liste steht: Daten, Funktionen, undefiniert, Kommentare oder Binärdaten. JSON unterstützt keines dieser Dinge nativ. Daten werden typischerweise als ISO 8601-Strings ("2025-01-15T10:30:00Z") übergeben, und Binärdaten werden Base64-codiert. Es ist ein wenig ärgerlich, aber es hält das Format universell.
JSON-Syntaxregeln
Die Syntax von JSON ist streng. Wenn Sie von JavaScript kommen, könnten Sie über einige dieser Regeln stolpern. Hier sind sie, ohne Zuckerbeschichtung:
- Schlüssel müssen doppelt angeführte Strings sein. Einfache Anführungszeichen funktionieren nicht. Unquoted keys funktionieren nicht. Das ist kein JavaScript.
- Strings müssen doppelte Anführungszeichen verwenden.
'hallo'ist ungültiges JSON."hallo"ist gültig. - Keine nachgestellten Kommas. Das letzte Komma nach der letzten Eigenschaft? JSON sagt nein.
- Keine Kommentare. Dies ist wahrscheinlich die umstrittenste Designentscheidung von JSON. Douglas Crockford hat sie absichtlich entfernt, um Missbrauch zu verhindern.
- Kein einzelner Wert als Wurzel (in älteren Spezifikationen). RFC 8259 erlaubt jetzt jeden JSON-Wert als Wurzel, aber viele Parser erwarten immer noch ein Objekt oder ein Array.
Hier ist ein gültiges JSON-Dokument:
{
"name": "Grace Hopper",
"age": 85,
"languages": ["COBOL", "FORTRAN"],
"retired": true,
"spouse": null,
"address": {
"city": "Arlington",
"state": "VA"
}
}
Und hier ist, was es kaputt macht:
{
name: "Grace Hopper", // ❌ Unquoted key
'age': 85, // ❌ Single-quoted key
"languages": ["COBOL",], // ❌ Trailing comma
// Dies ist ein Kommentar // ❌ Kommentare nicht erlaubt
}
Haben Sie ungültiges JSON? Fügen Sie es in unseren JSON Formatter ein, um sofort Syntaxfehler zu erkennen und häufige Probleme wie nachgestellte Kommas automatisch zu beheben.
JSON vs JavaScript-Objekte
Das bringt fast jeden JavaScript-Entwickler irgendwann ins Stolpern. JSON sieht aus wie ein JS-Objektliteral, aber sie sind nicht dasselbe. Hier sind die Unterschiede:
| Merkmal | JSON | JavaScript-Objekt |
|---|---|---|
| Schlüssel | Müssen doppelt angeführte Strings sein | Können unquoted identifiers, Symbole oder berechnete Werte sein |
| Strings | Nur doppelte Anführungszeichen | Einfache Anführungszeichen, doppelte Anführungszeichen oder Backticks |
| Nachgestellte Kommas | Nicht erlaubt | Erlaubt |
| Kommentare | Nicht erlaubt | Erlaubt |
| Werte | Strings, Zahlen, Booleans, null, Objekte, Arrays | Alle oben genannten plus Funktionen, undefiniert, Date, RegExp usw. |
| Methoden | Nicht unterstützt | Unterstützt |
| Verwendung | Datenformat für den Austausch (Text) | In-Memory-Datenstruktur |
In der Praxis konvertieren Sie zwischen ihnen mit JSON.parse() und JSON.stringify():
// String → Objekt
const data = JSON.parse('{"name": "Ada", "year": 1843}');
console.log(data.name); // "Ada"
// Objekt → String
const json = JSON.stringify({ name: "Ada", year: 1843 });
console.log(json); // '{"name":"Ada","year":1843}'
// Schön drucken mit 2 Leerzeichen Einrückung
const pretty = JSON.stringify(data, null, 2);
Häufige Anwendungsfälle
1. REST-APIs
Das ist das Brot und Butter von JSON. Die überwiegende Mehrheit der modernen Web-APIs sendet und empfängt JSON. Wenn Sie Daten von einem Server fetch()-en, erhalten Sie fast sicher JSON zurück:
const response = await fetch("https://api.example.com/users/1");
const user = await response.json();
// { "id": 1, "name": "Alice", "email": "alice@example.com" }
2. Konfigurationsdateien
package.json, tsconfig.json, .eslintrc.json, composer.json — die Liste geht weiter. JSON ist überall in den Entwicklerwerkzeugen. Das Fehlen von Kommentaren ist hier wirklich schmerzhaft, weshalb einige Werkzeuge JSON5 oder JSONC (JSON mit Kommentaren) als Alternativen unterstützen.
3. NoSQL-Datenbanken
MongoDB speichert Dokumente als BSON (Binary JSON). CouchDB verwendet einfaches JSON. DynamoDB, Firestore und unzählige andere verwenden JSON-ähnliche Strukturen. Wenn Sie mit einer Dokumentdatenbank arbeiten, arbeiten Sie mit JSON.
4. Lokale Speicherung & Zustandsverwaltung
Der Browser localStorage speichert nur Strings, daher ist die Serialisierung des Zustands zu JSON der Standardansatz:
// Speichern
localStorage.setItem("prefs", JSON.stringify({ theme: "dark", lang: "en" }));
// Laden
const prefs = JSON.parse(localStorage.getItem("prefs") ?? "{}");
5. Datenaustausch zwischen Mikrodiensten
Nachrichtenwarteschlangen (RabbitMQ, Kafka), Webhooks und die Kommunikation zwischen Diensten basieren stark auf JSON. Es ist nicht immer die effizienteste Wahl für Szenarien mit hohem Durchsatz (Protobuf und MessagePack sind schneller), aber es ist am einfachsten zu debuggen.
JSON-Best Practices
Nach Jahren der täglichen Arbeit mit JSON sind hier die Gewohnheiten, die ich empfehle, zu entwickeln:
- Verwenden Sie konsistente Namenskonventionen. Wählen Sie
camelCaseodersnake_casefür Schlüssel und halten Sie sich daran in Ihrer API. Sie zu mischen, ist ein schneller Weg zu Bugs. - Validieren Sie frühzeitig. Vertrauen Sie eingehendem JSON nicht blind. Verwenden Sie JSON Schema Validation, um fehlerhafte Daten abzufangen, bevor sie Ihre Geschäftslogik erreichen.
- Halten Sie die Verschachtelung flach. Wenn Ihr JSON mehr als 3–4 Ebenen tief ist, ziehen Sie in Betracht, es abzuflachen. Tief verschachtelte Strukturen sind schwer abzufragen, schwer zu lesen und schwer zu diffen.
- Verwenden Sie Arrays für Listen, Objekte für Datensätze. Klingt offensichtlich, aber ich habe gesehen, dass Leute Objekte mit numerischen String-Schlüsseln (
{"0": "a", "1": "b"}) anstelle von Arrays verwenden. Machen Sie das nicht. - Bevorzugen Sie
nullgegenüber fehlenden Schlüsseln, wenn ein Feld keinen Wert hat. Es macht das Schema explizit und vermeidet Mehrdeutigkeiten darüber, ob ein Feld absichtlich weggelassen wurde. - Formatieren Sie für Menschen während der Entwicklung. Minifizierte JSON spart Bytes, tötet aber die Lesbarkeit. Verwenden Sie beim Debuggen die schöne Druckausgabe, minifizieren Sie beim Versenden. Unser JSON Minifier kümmert sich um Letzteres.
Versuchen Sie es selbst: Fügen Sie beliebiges JSON in unseren JSON Formatter ein, um es sofort zu validieren, zu formatieren und seine Struktur mit Syntaxhervorhebung und Baumansicht zu erkunden.
Was ist mit JSON5 und JSONC?
Wenn Sie sich über die Strenge von JSON ärgern, sind Sie nicht allein. Zwei beliebte Erweiterungen lockern die Regeln:
- JSON5 erlaubt einfache Anführungszeichen, nachgestellte Kommas, Kommentare, unquoted keys und mehr. Es ist großartig für Konfigurationsdateien, bei denen Menschen die Hauptzielgruppe sind.
- JSONC (JSON mit Kommentaren) ist eine minimale Erweiterung, die von VS Code und TypeScript-Konfigurationen verwendet wird. Es fügt nur die Unterstützung für Kommentare hinzu — nichts weiter.
Keine dieser Optionen ist jedoch gültiges JSON. Wenn Sie eine API erstellen oder Daten zwischen Systemen austauschen, halten Sie sich an das Standard-JSON. Verwenden Sie Erweiterungen nur dort, wo die Werkzeuge sie ausdrücklich unterstützen.
Zusammenfassung
JSON hat nicht deshalb Erfolg gehabt, weil es perfekt ist, sondern weil es für fast alles gut genug und todsimple zu handhaben ist. Sein begrenztes Typsystem ist manchmal frustrierend (wo sind meine Daten?), und die Regel ohne Kommentare ist ein echtes Ärgernis. Aber diese Einschränkungen sind auch das, was es universell interoperabel macht.
Wenn Sie gerade erst anfangen, ist der beste Weg, JSON zu lernen, es praktisch zu verwenden. Versuchen Sie, einige Daten in unsere Werkzeuge einzufügen, Dinge absichtlich kaputt zu machen und zu sehen, was passiert. Das Verständnis der Fehlermeldungen ist die halbe Miete.
Weiter erkunden:
- JSON vs YAML — wann welches Format verwendet werden sollte
- JSON vs XML — warum JSON XML in den meisten Anwendungsfällen ersetzt hat
- JSON Validator — überprüfen Sie, ob Ihr JSON gültig ist
- JSON Schema Generator — automatisch Schemata aus JSON-Daten generieren