JSON
Kurz: “JavaScript Object Notation” — ein kompaktes, textbasiertes Datenformat für strukturierte Daten (Objekte, Arrays, Zahlen, Strings, Booleans), der De-facto-Standard für Datenaustausch zwischen Web-APIs und Anwendungen.
Genauer: Trotz des Namens ist JSON nicht an JavaScript gebunden — praktisch jede Programmiersprache kann JSON lesen und schreiben. Im Vergleich zu XML ist es deutlich kompakter (keine schließenden Tags) und wird nativ von JavaScript/TypeScript unterstützt (JSON.parse()/JSON.stringify()), weshalb es XML für die meisten neuen REST-APIs abgelöst hat.
Im Detail
{
"name": "Emzett Wiki",
"kategorien": ["Netzwerk", "Hardware", "Software"],
"aktiv": true,
"anzahlArtikel": 640
}JSON kennt nur eine kleine, feste Menge an Datentypen: Objekte ({}, Schlüssel-Wert-Paare), Arrays ([]), Zeichenketten, Zahlen, Booleans und null — bewusst simpel gehalten, was es leicht macht, in praktisch jeder Sprache eine JSON-Bibliothek zu implementieren. Anders als XML hat JSON keinen eingebauten Mechanismus für Kommentare oder Datentyp-Validierung gegen ein Schema (dafür gibt es separate Standards wie JSON Schema).
Weil JSON so nah an JavaScripts eigener Objekt-Syntax liegt, lässt es sich dort besonders einfach verarbeiten — in den meisten anderen Sprachen ist eine explizite Bibliothek nötig, um einen JSON-String in native Datenstrukturen umzuwandeln (Parsing) und umgekehrt (Serialisierung). Die Kompaktheit und einfache Lesbarkeit haben JSON seit den 2000er-Jahren zum Standardformat für REST-APIs gemacht, wo es XML weitgehend abgelöst hat.
Grenzen des Formats
JSON hat bewusste Einschränkungen, die in der Praxis regelmäßig auffallen: Es gibt keinen nativen Datumstyp (Daten werden meist als ISO-8601-String übertragen und müssen beim Empfänger geparst werden), keine Unterstützung für Kommentare (was Konfigurationsdateien in reinem JSON unhandlich macht — deshalb nutzen viele Tools stattdessen JSONC oder YAML für Configs), und Zahlen werden nicht zwischen Ganzzahl und Fließkommazahl unterschieden, was bei sehr großen Ganzzahlen (z. B. 64-Bit-IDs) zu Präzisionsverlust führen kann, da JavaScript Zahlen intern als 64-Bit-Gleitkommawerte speichert.
Verwandte Formate
Aus diesen Einschränkungen sind mehrere JSON-Erweiterungen entstanden: JSON5 erlaubt Kommentare und unquotierte Schlüssel für bessere Lesbarkeit in Konfigurationsdateien, NDJSON (Newline Delimited JSON) reiht mehrere JSON-Objekte zeilenweise aneinander und eignet sich für Streaming großer Datenmengen ohne das gesamte Dokument im Speicher halten zu müssen, und JSON Schema definiert ein Vokabular, um die erwartete Struktur eines JSON-Dokuments zu validieren — nützlich, um API-Verträge maschinenlesbar zu dokumentieren und automatisch zu prüfen.
Praktischer Einsatz in Next.js/TypeScript
In TypeScript-Projekten wird JSON häufig mit zod oder ähnlichen Validierungsbibliotheken kombiniert, um die zur Laufzeit unstrukturierten JSON-Daten (z. B. aus einer API-Antwort) in typsichere Objekte umzuwandeln — reines JSON.parse() liefert nämlich nur any, TypeScript kann die tatsächliche Struktur ohne explizite Validierung nicht garantieren.
const response = await fetch("/api/user");
const raw = await response.json(); // Typ: any
const user = userSchema.parse(raw); // Typ: validiertes User-Objekt