Was ist JSON? Aufbau, Datentypen und Beispiele
JSON (JavaScript Object Notation) ist ein textbasiertes Format, um strukturierte Daten zu speichern und zwischen Programmen auszutauschen. Es besteht aus verschachtelten Objekten (Schlüssel-Wert-Paaren) und Listen, ist für Menschen lesbar und lässt sich in praktisch jeder Programmiersprache einlesen. Du begegnest dem JSON-Format vor allem in Web-APIs, Konfigurationsdateien und Datenexporten.
Wenn du ein JSON-Dokument prüfen oder lesbar machen willst, füge es in den JSON-Formatierer ein. Er rückt es sauber ein, meldet Fehler mit Zeile und Spalte auf Deutsch und verarbeitet alles lokal in deinem Browser. Es wird nichts an einen Server gesendet.
Herkunft und Standards
JSON wurde Anfang der 2000er-Jahre von Douglas Crockford bekannt gemacht und beschrieben, auf json.org. Die Idee: Die Schreibweise für Objekte und Listen in JavaScript war schon da und einfach genug, um sie als sprachunabhängiges Austauschformat zu nutzen. Gegenüber XML kommt JSON mit deutlich weniger Zeichen aus.
Heute ist JSON in zwei Dokumenten festgelegt, die inhaltlich übereinstimmen:
- ECMA-404 („The JSON Data Interchange Syntax“) beschreibt nur die Syntax.
- RFC 8259 (IETF, 2017) beschreibt zusätzlich, wie JSON im Internet ausgetauscht wird. Er löste RFC 7159 ab. Danach muss JSON-Text, der zwischen Systemen ausgetauscht wird, in UTF-8 kodiert sein.
Seit RFC 7159 darf ein JSON-Dokument auch aus einem einzelnen Wert bestehen, etwa nur 42 oder "Hallo". Nicht jedes ältere Programm akzeptiert das, in der Praxis ist die Wurzel aber fast immer ein Objekt oder eine Liste.
Die sechs Werttypen
Jeder Wert in JSON ist genau einer von sechs Typen:
| Typ | Beispiel | Hinweis |
|---|---|---|
| Objekt | {"name": "Ada"} |
Schlüssel-Wert-Paare in geschweiften Klammern; Schlüssel sind immer Texte |
| Array (Liste) | [1, 2, 3] |
geordnete Werte in eckigen Klammern, beliebig gemischt |
| String (Text) | "Straße" |
immer in doppelten Anführungszeichen, Unicode erlaubt |
| Zahl | 42, -1.5, 2.5e3 |
dezimal, ohne Unterscheidung zwischen ganzen und Kommazahlen |
| Boolean | true, false |
klein geschrieben |
| Null | null |
„kein Wert“, klein geschrieben |
Objekte und Arrays dürfen beliebig ineinander verschachtelt werden. Mehr gibt es nicht: keine Datumstypen, keine Binärdaten, keine Funktionen. Ein Datum speicherst du üblicherweise als Text im ISO-Format, etwa "2026-10-04".
Der Standard legt für Zahlen keine Größe oder Genauigkeit fest. Viele Programme lesen sie als 64-Bit-Fließkommazahl, dann gehen sehr große Ganzzahlen ungenau ein. Der JSON-Formatierer ändert Zahlen beim Formatieren nicht, er behält sie Zeichen für Zeichen bei. Warum dabei zum Beispiel IDs falsch werden, erklärt der Ratgeber Große Zahlen in JSON.
Die strengen Regeln
JSON ist bewusst kleiner und strenger als JavaScript. Diese Regeln musst du einhalten:
- Doppelte Anführungszeichen für alle Texte und für alle Schlüssel. Einfache Anführungszeichen sind ungültig.
- Kein Komma nach dem letzten Eintrag eines Objekts oder einer Liste (siehe Komma am Ende).
- Keine Kommentare, weder
//noch/* … */(siehe Kommentare in JSON). - Kein
NaNund keinInfinity. Verwendenulloder einen Text. - Kein
undefined. Den Wert gibt es in JSON nicht. - Zahlen ohne führende Null, ohne führendes Plus und mit Ziffern vor und nach dem Dezimalpunkt.
- Sonderzeichen in Texten mit Backslash maskieren (
\",\\,\n), Zeilenumbrüche nicht direkt in Texte schreiben.
Ein typischer Verstoß sieht so aus:
{
// Benutzer
'name': 'Ada',
"alter": NaN,
}
Gültig ist dasselbe so:
{
"name": "Ada",
"alter": null
}
Wenn dir ein Parser einen Fehler meldet, hilft der Ratgeber JSON-Fehler finden und beheben.
Ein vollständiges Beispiel
Das folgende Dokument nutzt alle sechs Typen. Die Erklärungen stehen unter dem Code, denn Kommentare im JSON selbst wären ungültig.
{
"id": 1042,
"name": "Ada Lovelace",
"aktiv": true,
"spitzname": null,
"kontostand": 1250.75,
"rollen": ["admin", "autor"],
"adresse": {
"ort": "London",
"plz": "01067"
},
"bestellungen": [
{ "nr": "A-1", "betrag": 19.9 },
{ "nr": "A-2", "betrag": 5 }
]
}
- Das ganze Dokument ist ein Objekt (
{ … }) mit acht Schlüsseln. idundkontostandsind Zahlen,nameist ein String.aktivist ein Boolean,spitznameistnull(bewusst leer).rollenist ein Array aus Strings.adresseist ein verschachteltes Objekt. Die Postleitzahl steht als String, weil sonst die führende Null verloren ginge.bestellungenist ein Array aus Objekten, ein sehr verbreitetes Muster.
Wofür JSON verwendet wird
- Web-APIs: Server und Browser, Apps und Dienste tauschen Daten fast immer als JSON aus. Eine Antwort wird mit dem MIME-Type
application/jsonausgeliefert. Für diesen Typ ist keincharset-Parameter definiert, die Kodierung ist UTF-8. - Konfigurationsdateien: Bekannt ist
package.jsonbei Node.js-Projekten. Weil Kommentare fehlen, greifen manche Werkzeuge auf Varianten wie JSONC zurück oder man nutzt gleich YAML (Vergleich: JSON vs. YAML). - Datenspeicherung und Export: Dokumentendatenbanken, Logs und Exportdateien nutzen JSON. Dateien haben üblicherweise die Endung
.json. Wie du solche Dateien unter Windows, auf dem Mac oder im Browser öffnest, zeigt der Ratgeber JSON-Datei öffnen und lesen.
Brauchst du dieselben Daten als YAML, wandelt der JSON-zu-YAML-Konverter sie direkt im Browser um.
JSON ist kein JavaScript-Objekt
JSON stammt aus der JavaScript-Schreibweise, ist aber ein reines Datenformat: Es ist Text. Ein JavaScript-Objektliteral ist dagegen Code und viel freier:
// JavaScript-Objektliteral: gültig in JS, aber kein JSON
const nutzer = {
name: 'Ada', // Schlüssel ohne Anführungszeichen, einfache Quotes
alter: undefined, // undefined
gruss() { return 'Hi' }, // Funktion
// Kommentare erlaubt
rollen: ['admin',], // Komma am Ende erlaubt
};
Zwischen beiden vermitteln zwei eingebaute Funktionen:
const text = JSON.stringify({ name: "Ada", alter: undefined, aktiv: true });
// '{"name":"Ada","aktiv":true}' – undefined wird weggelassen
const objekt = JSON.parse('{"name":"Ada","aktiv":true}');
// { name: 'Ada', aktiv: true }
JSON.stringify() erzeugt aus einem Objekt gültiges JSON oder bricht mit einem Fehler ab, etwa bei zirkulären Verweisen oder BigInt-Werten. JSON.parse() liest nur Text, der den strengen Regeln entspricht, und wirft sonst einen Fehler. Deshalb solltest du JSON nie von Hand per Textverkettung bauen.
Kurz gesagt
- JSON ist ein textbasiertes, sprachunabhängiges Datenformat, festgelegt in ECMA-404 und RFC 8259.
- Es kennt sechs Werttypen: Objekt, Array, String, Zahl,
true/falseundnull. - Strenge Regeln: doppelte Anführungszeichen, kein Komma am Ende, keine Kommentare, kein
NaN,Infinityoderundefined. - Der MIME-Type ist
application/json, typische Einsatzorte sind APIs und Konfigurationsdateien wiepackage.json. - Ein JavaScript-Objektliteral ist nicht automatisch JSON. Erzeuge JSON mit
JSON.stringify().
Weiterlesen: JSON-Fehler finden und beheben, JSON vs. YAML, Was ist YAML?, Ist es sicher, JSON online zu formatieren? und der JSON-Formatierer.