JSON (RFC 8259)

JavaScript Object Notation – Der Standard für Datenaustausch im Web

JSON

JavaScript Object Notation – RFC 8259 (IETF-Standard)

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.

RFC 8259 2017 (Aktuelle Version) IETF-Standard

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.

// Ein typisches JSON-Objekt
{
  "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.

RFC 8259 - The JavaScript Object Notation (JSON) Data Interchange Format
Veröffentlicht: Dezember 2017 | Status: Internet Standard | Kategorie: Standards Track

Geschichte von JSON

2001

Douglas Crockford spezifiziert JSON erstmals. Der Name "JSON" wird geprägt.

2006

RFC 4627 – JSON wird offiziell als IETF-Standard anerkannt.

2013

ECMA-404 – JSON wird auch von Ecma International standardisiert.

2014

RFC 7159 – Überarbeitung des Standards, Zusammenführung mit ECMA-404.

2017

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)
// JavaScript-Objekt (kein gültiges JSON!)
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:

// Ungültiges JSON – was ist falsch?
{
  name: "Max", // ❌ Schlüssel ohne Anführungszeichen
  "alter": 30,
  "hobbys": ["Lesen", "Schwimmen",] // ❌ Nachfolgendes Komma
}

Richtig wäre:

{
  "name": "Max",
  "alter": 30,
  "hobbys": ["Lesen", "Schwimmen"]
}
Zum JSON-Validator

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 Formatter

JSON-Daten formatieren, validieren und analysieren.

Zum JSON Formatter
REST-APIs

Wie Web-APIs mit JSON arbeiten.

Zu den Web-APIs
JavaScript

JSON.parse() und JSON.stringify() in JavaScript.

Zu JavaScript