← Zurück zum Blog

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 Team14 Min. Lesezeitadvanced
B

Big JSON Team

Technical Writer

Expert in JSON data manipulation, API development, and web technologies. Passionate about creating tools that make developers' lives easier.

14 Min. Lesezeit

# 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

Share:

Verwandte Artikel

Read in English