JSON Schema verstehen: Vollständiger Leitfaden zur Validierung
Lernen Sie JSON Schema: Definition, Validierung, Best Practices. Erstellen und verwenden Sie Schemas für robuste JSON-Datenvalidierung.
Big JSON Team
• Technical WriterExpert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.
# JSON Schema verstehen
Ein umfassender Leitfaden zu JSON Schema für Datenvalidierung und Dokumentation.
Was ist JSON Schema?
JSON Schema ist ein Vokabular zur Annotation und Validierung von JSON-Dokumenten. Es ermöglicht die Definition der erwarteten Struktur, Datentypen und Einschränkungen.
Grundlegendes Beispiel
Schema:{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"alter": {
"type": "number",
"minimum": 0
}
},
"required": ["name"]
}
Gültige Daten:
{
"name": "Max Mustermann",
"alter": 30
}
Ungültige Daten:
{
"alter": 30
}
// Fehler: 'name' ist erforderlich
Grundlegende Datentypen
String
{
"type": "string",
"minLength": 1,
"maxLength": 100,
"pattern": "^[A-Za-z]+$"
}
Number
{
"type": "number",
"minimum": 0,
"maximum": 100,
"multipleOf": 0.01
}
Integer
{
"type": "integer",
"minimum": 1,
"maximum": 999,
"exclusiveMinimum": 0
}
Boolean
{
"type": "boolean"
}
Array
{
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 10,
"uniqueItems": true
}
Object
{
"type": "object",
"properties": {
"vorname": { "type": "string" },
"nachname": { "type": "string" }
},
"required": ["vorname", "nachname"],
"additionalProperties": false
}
Erweiterte Features
Enum (Aufzählungstyp)
{
"type": "string",
"enum": ["klein", "mittel", "groß"]
}
Format-Validierung
{
"email": {
"type": "string",
"format": "email"
},
"datum": {
"type": "string",
"format": "date"
},
"url": {
"type": "string",
"format": "uri"
}
}
Verschachtelte Objekte
{
"type": "object",
"properties": {
"person": {
"type": "object",
"properties": {
"name": { "type": "string" },
"adresse": {
"type": "object",
"properties": {
"stadt": { "type": "string" },
"plz": { "type": "string" }
}
}
}
}
}
}
Praktische Beispiele
Benutzer-Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://example.com/schemas/benutzer.json",
"title": "Benutzer",
"description": "Ein Benutzer im System",
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "Eindeutige Benutzer-ID"
},
"benutzername": {
"type": "string",
"minLength": 3,
"maxLength": 20,
"pattern": "^[a-zA-Z0-9_]+$"
},
"email": {
"type": "string",
"format": "email"
},
"alter": {
"type": "integer",
"minimum": 13,
"maximum": 120
},
"rollen": {
"type": "array",
"items": {
"type": "string",
"enum": ["admin", "benutzer", "gast"]
},
"uniqueItems": true
}
},
"required": ["benutzername", "email"]
}
Validierung in verschiedenen Sprachen
JavaScript (ajv)
const Ajv = require('ajv');
const ajv = new Ajv();
const schema = {
type: "object",
properties: {
name: { type: "string" },
alter: { type: "number", minimum: 0 }
},
required: ["name"]
};
const validate = ajv.compile(schema);
const daten = { name: "Max", alter: 30 };
const gueltig = validate(daten);
if (!gueltig) {
console.log(validate.errors);
}
Python (jsonschema)
from jsonschema import validate, ValidationError
schema = {
"type": "object",
"properties": {
"name": {"type": "string"},
"alter": {"type": "number", "minimum": 0}
},
"required": ["name"]
}
daten = {"name": "Max", "alter": 30}
try:
validate(instance=daten, schema=schema)
print("✅ Gültig!")
except ValidationError as e:
print(f"❌ Fehler: {e.message}")
Best Practices
1. Verwenden Sie $schema
{
"$schema": "http://json-schema.org/draft-07/schema#"
}
2. Fügen Sie Beschreibungen hinzu
{
"type": "object",
"description": "Benutzer-Profil",
"properties": {
"name": {
"type": "string",
"description": "Vollständiger Name des Benutzers"
}
}
}
3. Verwenden Sie $ref für Wiederverwendung
{
"definitions": {
"adresse": {
"type": "object",
"properties": {
"straße": { "type": "string" },
"stadt": { "type": "string" }
}
}
},
"type": "object",
"properties": {
"rechnungsadresse": { "$ref": "#/definitions/adresse" },
"lieferadresse": { "$ref": "#/definitions/adresse" }
}
}
Zusammenfassung
JSON Schema ist essenziell für:
✅ Datenvalidierung
✅ API-Dokumentation
✅ Code-Generierung
✅ Qualitätssicherung
Weiterführende Ressourcen
Verwandte Artikel
Was ist JSON? Vollständiger Leitfaden für Anfänger
Lernen Sie die Definition, Geschichte und Struktur von JSON. Vollständiger Leitfaden für Anfänger mit Datentypen, Syntaxregeln und praktischen Beispielen.
JSON APIs und REST-Dienste: Vollständiger Entwickler-Leitfaden
Meistern Sie JSON in REST-APIs: Best Practices, Beispiele, Authentifizierung, Fehlerbehandlung und moderne API-Entwicklung.
Häufige JSON-Fehler und wie man sie behebt
Lernen Sie die häufigsten JSON-Fehler kennen und wie Sie sie vermeiden. Kompletter Leitfaden zu Syntaxfehlern, Parsing-Problemen und Debugging-Techniken.