JSON Schema Validierung: Der vollstandige Leitfaden zum Definieren und Validieren von JSON-Daten
Erfahren Sie, wie JSON Schema als Vertrag fuer Ihre Daten funktioniert -- von Grundtypen und Pflichtfeldern bis hin zu Formatvalidierung, Draft-Versionen und realen Anwendungsfaellen fuer APIs und Konfigurationsdateien.
Was ist JSON Schema?
JSON Schema ist eine deklarative Sprache, mit der Sie die Struktur, den Inhalt und die Einschraenkungen eines JSON-Dokuments beschreiben koennen. Stellen Sie es sich als einen Vertrag zwischen einem Datenproduzenten und einem Datenkonsumenten vor. Der Produzent sagt "Ich werde immer ein Objekt mit einem name-String und einem age-Integer senden", und der Konsument kann ueberpruefen, ob jeder eingehende Payload tatsaechlich diesem Versprechen entspricht.
Das ist wichtig, weil JSON selbst kein Schema hat. Jeder gueltige JSON-Wert ist voellig legal. Diese Freiheit ist wunderbar fuer schnelles Prototyping, wird aber zum Problem, sobald zwei Systeme sich darueber einigen muessen, wie Daten aussehen sollen.
Warum JSON Schema fuer APIs wichtig ist
REST-APIs kommunizieren ueber JSON-Payloads, und jeder Endpunkt hat eine implizite Form. JSON Schema macht diese Form explizit und maschinenlesbar. Mit einem Schema koennen Sie:
- Anfragen validieren auf dem Server, bevor sie Ihre Geschaeftslogik erreichen.
- Antworten validieren in Integrationstests, um brechende Aenderungen zu erkennen.
- Dokumentation generieren -- Tools wie Swagger/OpenAPI verwenden JSON Schema als Rueckgrat ihrer Typdefinitionen.
- Code generieren -- Schema-zu-TypeScript, Schema-zu-Go-Struct-Tools eliminieren manuelle Typdefinitionen.
JSON Schema Grundlagen
Jedes JSON Schema ist selbst ein JSON-Objekt. Das einfachste moegliche Schema ist ein leeres Objekt {}, das jedes gueltige JSON akzeptiert.
Primitive Typen
Das type-Schluesselwort ist das Fundament. JSON Schema erkennt sechs primitive Typen:
| Typ | JSON-Beispiel | Hinweise |
|---|---|---|
| string | "hallo" | Textwerte. Einschraenkbar mit minLength, maxLength, pattern. |
| number | 3.14 | Beliebiger numerischer Wert. Verwenden Sie minimum, maximum, multipleOf. |
| integer | 42 | Nur ganze Zahlen. Gleiche Einschraenkungen wie number. |
| boolean | true | Nur true oder false. |
| object | {"key": "wert"} | Schluessel-Wert-Paare. Definiert mit properties, required, additionalProperties. |
| array | [1, 2, 3] | Geordnete Listen. Verwenden Sie items, minItems, maxItems, uniqueItems. |
| null | null | Das Fehlen eines Werts. Oft mit einem anderen Typ kombiniert. |
Eigenschaften und Pflichtfelder
Fuer Objekte definiert das properties-Schluesselwort, welche Schluessel erwartet werden. Das required-Schluesselwort listet auf, welche davon vorhanden sein muessen.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": { "type": "string", "minLength": 1 },
"email": { "type": "string", "format": "email" },
"age": { "type": "integer", "minimum": 0 }
},
"required": ["name", "email"]
}
Zusaetzliche Eigenschaften kontrollieren
"additionalProperties": false macht das Schema strikt -- nur die aufgelisteten Schluessel sind erlaubt.
additionalProperties: false zusammen mit allOf verwenden, koennen in anderen Sub-Schemas definierte Eigenschaften abgelehnt werden. Dies ist eine der haeufigsten Fallen in JSON Schema.
Formatvalidierung
Das format-Schluesselwort bietet semantische Validierung ueber grundlegende Typen hinaus.
Eingebaute Formate
| Format | Beispielwert | Anwendungsfall |
|---|---|---|
| date-time | 2026-03-27T10:30:00Z | ISO 8601 Zeitstempel fuer Events und Logs |
| date | 2026-03-27 | Kalenderdaten ohne Uhrzeit |
[email protected] | Kontaktformulare, Benutzerregistrierung | |
| uri | https://example.com/api | Webhook-URLs, Ressourcenlinks |
| uuid | 550e8400-e29b-41d4-a716-446655440000 | Eindeutige Bezeichner, Primaerschluessel |
| ipv4 | 192.168.1.1 | Netzwerkkonfiguration, Serveradressen |
Format als Annotation vs. Assertion
Standardmaessig ist format eine Annotation, keine Assertion. In Draft 2020-12 muessen Sie die Format-Assertion explizit aktivieren.
format immer mit einem pattern-Regex, wenn strikte Validierung fuer Ihren Anwendungsfall kritisch ist.
Draft-Versionen: Draft-07 vs 2020-12
Die zwei Draft-Versionen, denen Sie am haeufigsten begegnen, sind Draft-07 und Draft 2020-12.
Wichtige Unterschiede
| Merkmal | Draft-07 | Draft 2020-12 |
|---|---|---|
| prefixItems | Nicht verfuegbar | Ersetzt Tuple-Validierung |
| $dynamicRef | Nicht verfuegbar | Neu -- dynamische Schema-Referenzen |
| unevaluatedProperties | Nicht verfuegbar | Loest das additionalProperties + allOf Problem |
| Bibliotheksunterstuetzung | Ausgezeichnet | Gut und wachsend |
Welche Version sollten Sie waehlen?
Waehlen Sie Draft-07, wenn Ihr Oekosystem es bereits verwendet oder Sie maximale Kompatibilitaet benoetigen.
Waehlen Sie Draft 2020-12, wenn Sie ein neues Projekt ohne Legacy-Einschraenkungen starten.
Fazit
Fuer die meisten neuen Projekte im Jahr 2026 ist Draft 2020-12 die bessere Standardwahl.
So verwenden Sie unseren JSON Schema Generator
Unser kostenloser JSON Schema Generator nimmt jeden JSON-Payload und erzeugt automatisch ein gueltiges Schema. Alles laeuft in Ihrem Browser.
Schritt-fuer-Schritt-Anleitung
- Oeffnen Sie das JSON Schema Generator-Tool.
- Fuegen Sie Ihr JSON in den Eingabebereich ein.
- Klicken Sie auf Generieren und das Tool analysiert jedes Feld, leitet Typen ab und erkennt Formate.
- Ueberpruefen Sie die Ausgabe -- das generierte Schema erscheint im Ausgabebereich.
- Wechseln Sie zum Validieren-Tab, um Ihr Schema gegen neue JSON-Payloads zu testen.
- Kopieren Sie das Schema mit einem Klick und integrieren Sie es in Ihr Projekt.
Datenschutzhinweis
Unser JSON Schema Generator laeuft 100% in Ihrem Browser. Ihre JSON-Daten, generierten Schemas und Validierungsergebnisse verlassen nie Ihr Geraet.
Generieren Sie Ihr JSON Schema sofort
Fuegen Sie einen beliebigen JSON-Payload ein und erhalten Sie ein einsatzbereites Schema mit Typinferenz, Pflichtfeldern und Formaterkennung -- 100% in Ihrem Browser.