Was ist ein JSON-Dokument?
Strukturierte Datendatei mit Schlüssel-Wert-Paaren, Arrays, Strings, Zahlen, Booleans, null. Lingua franca von APIs, Configs, Datenbanken und…
Was ist ein JSON-Dokument?
Ein JSON-Dokument ist ein Stück strukturierter Daten, formatiert in JavaScript Object Notation (JSON) — ein leichtgewichtiges textbasiertes Format, das Menschen lesen und Maschinen parsen können. JSON ist die Lingua Franca des Datenaustauschs im modernen Web geworden: APIs geben JSON zurück, Konfigurationsdateien nutzen JSON, Document-Datenbanken speichern JSON, Build-Tools akzeptieren JSON, Deployment-Manifeste nutzen JSON. Wenn du 2026 Software anfasst, fasst du ständig JSON-Dokumente an.
Trotz des JavaScripts in seinem Namen ist JSON sprach-unabhängig. Python, Go, Rust, Java, C#, PHP, Ruby — jede moderne Sprache hat eingebautes oder nahezu Standard-JSON-Parsing. Das Format ist in RFC 8259 (und ECMA-404) beschrieben, was es zu einem der stabilsten Datenformate in aktueller Nutzung macht.
Die sechs JSON-Werttypen
Ein JSON-Dokument ist aus genau diesen sechs Typen aufgebaut — nicht mehr, nicht weniger:
- Object:
{ "key": value, ... }— ungeordnete Menge von Schlüssel-Wert-Paaren. Schlüssel sind immer Strings. - Array:
[ value, value, ... ]— geordnete Liste von Werten. - String:
"hello"— UTF-8-Text in doppelten Anführungszeichen. Forward Slashes können optional escaped werden; Backslashes und Anführungszeichen müssen escaped werden. - Number:
42,3.14,1e10,-7— Dezimalzahlen. JSON unterscheidet NICHT zwischen Int und Float auf Format-Ebene. - Boolean:
trueoderfalse— Kleinbuchstaben, keine Anführungszeichen. - Null:
null— explizit das Fehlen eines Werts.
Das ist alles. Keine Daten, keine UUIDs, keine binären Blobs, keine Kommentare. Alles darüber hinaus sind Konventionen, die obendrauf gelegt werden (ISO-8601-Daten als Strings, Base64-kodierte Binärdaten als Strings etc.).
Ein kanonisches JSON-Dokument
{
"id": "order_42",
"customer": {
"name": "Alice",
"email": "alice@example.com",
"verified": true
},
"items": [
{ "sku": "WIDGET-1", "qty": 2, "price": 9.99 },
{ "sku": "GIZMO-7", "qty": 1, "price": 19.95 }
],
"total": 39.93,
"shipped_at": null,
"tags": ["priority", "gift"]
}Jeder Wert ist einer der sechs Typen. Die Struktur kann beliebig tief verschachtelt werden, und die gleiche Form wird in jeder Sprache mit einer JSON-Library identisch parsen.
JSON in Production: wo du es triffst
- REST-APIs — Request- und Response-Bodies sind meist JSON. Content-Type
application/json. - Konfigurationsdateien —
package.json(Node),tsconfig.json(TypeScript),composer.json(PHP),cargo.toml(Rust nutzt TOML, aber die meisten JS-nahen Ökosysteme sind JSON). - NoSQL-Datenbanken — MongoDB speichert BSON (Binary JSON). Couchbase, DynamoDB, Firestore exponieren alle Document-geformte APIs.
- Logging — Structured Logging gibt ein JSON-Objekt pro Log-Zeile aus (Newline-Delimited JSON, NDJSON).
- JSON Schema — beschreibt JSON-Formen für Validierung. Breit genutzt in OpenAPI, AJV (JS-Validator) und vielen Tooling-Pipelines.
- JSON-LD — JSON für Linked Data. Genutzt für SEO-Structured-Data (FAQPage, BreadcrumbList, Article), das Format, das Google für Rich Snippets nutzt.
- Cloud-Manifeste — AWS CloudFormation, Kubernetes-Resources (wenn via JSON authoring), Terraform-State-Files.
JSON-Fallen, die jeder irgendwann trifft
- Keine Trailing Commas erlaubt.
{"a":1,}ist ungültiges JSON. JavaScript-Objekte erlauben Trailing Commas; JSON nicht. Häufige Quelle von "mein JSON parst nicht"-Frustration. - Keine Kommentare. Reines JSON hat kein
//oder/* */. Workarounds: JSON5, JSONC oder Kommentare einfach als"_comment"-Keys einbetten (und daran denken, sie vor strikten Parsern zu strippen). - Zahlen können Präzision verlieren. JavaScripts
JSON.parsespeichert alle Zahlen als IEEE-754-Doubles. Integer größer als 2^53-1 (9.007.199.254.740.991) verlieren Präzision. Für 64-Bit-IDs aus Datenbanken serialisiere als Strings. - Daten sind kein Typ. Serialisiere immer als ISO-8601-Strings (
"2026-05-07T08:22:00Z") oder Unix-Timestamps (Zahlen). Beide Enden einigen sich, welches. - Doppelte Keys sind technisch gültig, aber Undefined Behavior. Die meisten Parser nehmen den letzten Wert. Schreibe kein JSON mit doppelten Keys.
- UTF-8-only. JSON ist UTF-8 by Default. Andere Encodings (UTF-16, Latin-1) verursachen Probleme — konvertiere zu UTF-8 an der Grenze.
- Whitespace zählt nicht für Parsing, aber für Diffing. Pretty-printed JSON-Diffs sind weitaus lesbarer als minifizierte. Nutze einen Formatter (
jq .,JSON.stringify(x, null, 2)) vor Commits. - Feld-Reihenfolge ist nicht signifikant. Zwei JSON-Dokumente mit den gleichen Keys in unterschiedlicher Reihenfolge sind semantisch identisch. Tools wie
jq -Ssortieren Keys für kanonischen Vergleich.
JSON vs. andere Datenformate
| Format | Am besten für | Tradeoffs |
|---|---|---|
| JSON | APIs, Configs, Document-Datenbanken | Verbose, keine Kommentare, keine Daten |
| YAML | Mensch-editierte Configs (CI, K8s) | Whitespace-sensitiv, Edge-Cases |
| TOML | App-Configs (Rust, Python) | Weniger Ökosystem-Unterstützung |
| XML | Document-Markup, Legacy-Enterprise | Verbose, komplexes Parsing |
| Protocol Buffers | High-Throughput-RPC (gRPC) | Binär, erfordert Schema |
| MessagePack | Kompaktes JSON-äquivalentes Binär | Kleiner, weniger debuggbar |
| BSON | MongoDBs interner Storage | Fügt Binär-, Datums-Typen zu JSON hinzu |
FAQ: JSON-Dokumente
Was ist der Unterschied zwischen JSON und JavaScript-Objekten?
JSON ist eine strikte Untermenge der JavaScript-Object-Literal-Syntax. Reines JSON erfordert doppelt-quoted Keys; JavaScript erlaubt unquoted oder single-quoted Keys. JSON erlaubt keine Funktionen, kein undefined, keine Kommentare. JSON.parse validiert die strikte Form.
Wie validiere ich JSON?
Online: jsonlint.com. CLI: jq . file.json (parst + pretty-printed, Fehler bei ungültigem). Für Schema-Validierung: AJV (JS), python-jsonschema, JSON Schema Validator.
Wie groß kann ein JSON-Dokument sein?
Das Format impliziert kein Limit. Praktische Limits kommen von Parsern (manche allokieren das volle Dokument im RAM) und APIs (Cloudflare 100MB, AWS API Gateway 10MB, die meisten CDNs ~10MB). Für größere Daten nutze NDJSON-Streaming oder wechsle zu Protocol Buffers/Parquet.
JSON vs. JSON Lines (NDJSON)?
NDJSON ist ein gültiges JSON-Dokument pro Zeile. Genutzt für Streaming und Append-Only-Logs — du kannst Zeile für Zeile parsen, ohne alles zu laden. Standard-JSON-Arrays erfordern, das ganze Array zuerst zu laden.
Was ist JSON Schema?
Ein JSON-basiertes Format zur Beschreibung, wie ein gültiges JSON-Dokument aussieht (erforderliche Felder, Typen, Einschränkungen). Genutzt für API-Validierung, IDE-Autocompletion (suche deine package.json in VS Code) und Config-Validierung.
Sollte ich JSON oder YAML für Configs nutzen?
Für maschinen-generierte Configs (Build-Outputs, Locks): JSON. Für handgeschriebene Configs, wo Lesbarkeit und Kommentare zählen (CI-Workflows, K8s-Manifeste): YAML. Die Linie ist unscharf und ökosystem-abhängig.
Warum hat JSON keinen Datums-Typ?
Weil die Original-Spec minimal war und JavaScript-Daten Timezone-Komplikationen haben. Die Konvention ist, Daten als ISO-8601-Strings zu serialisieren; moderne Parser können sie via Custom-Logik als Date-Objekte revive.
Wie LoadFocus zu JSON in Production steht
JSON-Dokumente bewegen sich durch jede Schicht moderner Web-Apps — Request-Payloads, Response-Bodies, Log-Einträge. LoadFocus-API-Lasttest validiert, dass JSON-Endpoints realistische konkurrente Payloads ohne Serialisierungs-Bottlenecks handhaben. API-Monitoring validiert Response-Formen via JSON-Schema-Assertions und fängt Drift, wenn eine API still ein Feld droppt.
Verwandte LoadFocus-Tools
Setze dieses Konzept mit LoadFocus in die Praxis um — derselben Plattform, die alles antreibt, was du gerade gelesen hast.