ToolDeck

JSON Schema Validator

JSON-Daten gegen ein JSON Schema (Draft 7) validieren

Beispiel ausprobieren

JSON-Daten

JSON Schema

Läuft lokal · Sicher zum Einfügen von Secrets
Läuft lokal · Sicher zum Einfügen von Secrets

Was ist JSON Schema Validierung?

JSON Schema Validierung ist der Prozess der Überprüfung, ob ein JSON-Dokument einer Menge struktureller und inhaltlicher Einschränkungen entspricht, die in einem JSON Schema definiert sind. Das Schema selbst ist ein JSON-Dokument, das die erwartete Form Ihrer Daten beschreibt: welche Eigenschaften erforderlich sind, welche Typen sie haben müssen, die erlaubten Wertebereiche für Zahlen, String-Muster, Array-Längen und mehr. Die JSON Schema Spezifikation wird auf json-schema.org gepflegt und als Serie von IETF-Drafts veröffentlicht — Draft 7 und Draft 2020-12 sind die am weitesten verbreiteten.

Während eine einfache JSON-Validierung nur die Syntax prüft (sind die Klammern korrekt gesetzt? sind Strings in Anführungszeichen?), geht die Schema-Validierung weiter. Sie beantwortet Fragen wie: Enthält die Antwort dieser API ein "id"-Feld, das immer eine Ganzzahl ist? Ist das "status"-Feld einer von drei erlaubten Werten? Sind verschachtelte Objekte korrekt geformt? Diese Art der strukturellen Überprüfung findet Fehler, die Syntaxprüfungen vollständig übersehen — denn syntaktisch gültiges JSON kann für Ihre Anwendung semantisch trotzdem falsch sein.

JSON Schema wird in OpenAPI/Swagger-Definitionen, bei der Validierung von Konfigurationsdateien, bei der Formularvalidierung, in Datenbankdokument-Constraints und im automatisierten Testen eingesetzt. Tools wie Ajv (JavaScript), jsonschema (Python) und check-jsonschema (CLI) implementieren die Spezifikation, damit Sie Daten programmatisch validieren können. Dieser Online-Validator ermöglicht es Ihnen, Schema und Datendokument einzufügen und die Konformität sofort zu prüfen — ohne eine Bibliothek installieren zu müssen.

Warum einen Online JSON Schema Validator verwenden?

Schemas schreiben und Validierungsfehler manuell debuggen ist zeitaufwendig. Ein Online JSON Schema Validator gibt Ihnen sofortiges Feedback, ob Ihre Daten mit Ihrem Schema übereinstimmen — mit klaren Fehlermeldungen, die auf die genaue Eigenschaft zeigen, die fehlgeschlagen ist.

Sofortiges Validierungs-Feedback
Fügen Sie Schema und Daten ein und sehen Sie die Validierungsergebnisse in Echtzeit. Jeder Fehler zeigt den JSON-Pfad und die spezifische Einschränkung, die nicht erfüllt wurde — damit Sie Probleme beheben können, ohne sich durch die Ausgabe einer Validator-Bibliothek arbeiten zu müssen.
🔒
Datenschutz — nur im Browser
Ihre JSON-Daten verlassen niemals Ihren Browser. Die gesamte Validierung läuft lokal in JavaScript. Kein Server, keine Logs, keine Datenspeicherung. Sicher für Schemas, die interne APIs beschreiben oder proprietäre Feldnamen enthalten.
🎯
Draft-bewusste Validierung
Der Validator unterstützt Draft 7 Schema-Schlüsselwörter, darunter type, required, properties, enum, pattern, minimum/maximum, items, anyOf, oneOf, allOf und additionalProperties. Testen Sie Ihr Schema hier, bevor Sie es in Ihre Build-Pipeline oder Testsuite integrieren.
📋
Kein Konto, keine Installation
Seite öffnen, JSON einfügen und validieren. Kein npm install, kein pip-Paket, kein Docker-Image. Nützlich, wenn Sie eine schnelle Schema-Prüfung auf einem Rechner benötigen, auf dem keine Entwicklungstools installiert werden können.

Anwendungsfälle für JSON Schema Validierung

API-Vertragstests
Validieren Sie API-Antworten gegen das in Ihrer OpenAPI-Spezifikation definierte Schema. Erkennen Sie Breaking Changes — etwa wenn ein Feld von Ganzzahl auf String wechselt — bevor sie die Produktion erreichen.
Konfigurationsdatei-Verifizierung
Prüfen Sie, ob JSON-Konfigurationsdateien für CI/CD-Pipelines, Kubernetes-Manifeste oder Anwendungseinstellungen dem erwarteten Schema entsprechen, bevor Sie committen. Verhindert Deployment-Fehler durch fehlende oder falsch geschriebene Schlüssel.
DevOps-Pipeline-Gates
Fügen Sie Schema-Validierung als CI-Schritt hinzu, um Payloads abzulehnen, die den Vertrag verletzen. Das funktioniert für Terraform-Variablendateien, GitHub Actions Inputs oder beliebige strukturierte JSON-Daten, die von Automatisierungen verarbeitet werden.
QA und Testdaten-Review
Stellen Sie sicher, dass Test-Fixtures und Mock-Datendateien demselben Schema entsprechen, das Ihre Anwendung erwartet. Nicht übereinstimmende Testdaten sind eine häufige Ursache für falsch-positive Testergebnisse.
Datenpipeline-Ingestion
Validieren Sie eingehende JSON-Datensätze am Eingang einer Datenpipeline. Schema-Validierung filtert fehlerhafte Ereignisse heraus, bevor sie Ihr Data Warehouse erreichen — und reduziert so den Bereinigungsaufwand nachgelagert.
JSON Schema Syntax erlernen
Experimentieren Sie interaktiv mit Schema-Schlüsselwörtern. Schreiben Sie ein Schema, fügen Sie Testdaten ein und sehen Sie, welche Einschränkungen bestanden werden und welche nicht. Schneller als jedes Mal ein Skript zu schreiben und vom Terminal aus auszuführen.

JSON Schema Schlüsselwörter — Referenz

Ein JSON Schema wird aus Schlüsselwörtern aufgebaut, die jeweils eine Einschränkung für die zu validierenden Daten auferlegen. Die nachstehende Tabelle listet die am häufigsten verwendeten Schlüsselwörter in Draft 7 und späteren Versionen auf. Jedes Schlüsselwort kann mit anderen im selben Schema-Objekt kombiniert werden.

SchlüsselwortZweckBeispiel
typeRestricts the data type"type": "string"
propertiesDefines expected object keys and their schemas"properties": { "name": { "type": "string" } }
requiredLists mandatory properties"required": ["id", "name"]
itemsSchema for array elements"items": { "type": "number" }
enumRestricts value to a fixed set"enum": ["active", "inactive"]
patternRegex constraint on strings"pattern": "^[A-Z]{2}\\d{4}$"
minimum / maximumNumeric range bounds"minimum": 0, "maximum": 100
minLength / maxLengthString length bounds"minLength": 1, "maxLength": 255
$refReuses another schema by URI"$ref": "#/$defs/address"
additionalPropertiesControls extra keys in objects"additionalProperties": false
anyOf / oneOf / allOfCombines multiple schemas logically"anyOf": [{ "type": "string" }, { "type": "null" }]
if / then / elseConditional schema application"if": { "properties": { "type": { "const": "email" } } }

JSON Schema Draft-Vergleich: Draft 7 vs. 2019-09 vs. 2020-12

JSON Schema hat mehrere Draft-Versionen durchlaufen. Draft 7 (veröffentlicht 2018) ist in Tooling am weitesten verbreitet. Draft 2019-09 führte $defs (als Ersatz für definitions), unevaluatedProperties und $recursiveRef ein. Draft 2020-12 (die aktuelle stabile Version) ersetzte $recursiveRef durch $dynamicRef und führte prefixItems für Tupel-Validierung ein. Prüfen Sie bei der Wahl eines Drafts, ob Ihre Validierungsbibliothek ihn unterstützt. Ajv unterstützt alle drei Drafts. Die Python-Bibliothek jsonschema unterstützt Draft 2020-12 seit Version 4.0.

FunktionDraft 7Draft 2019-09Draft 2020-12
$schema URIdraft-07/schema#2019-09/schema2020-12/schema
if / then / elseYesYesYes
$defs (definitions)definitions$defs$defs
$ref alongside keysNo (sibling ignored)YesYes
$dynamicRefNoNo ($recursiveRef)Yes
prefixItemsNo (use items array)No (use items array)Yes
unevaluatedPropertiesNoYesYes
$vocabularyNoYesYes

Code-Beispiele

Diese Beispiele zeigen, wie JSON programmatisch gegen ein Schema validiert wird. Jedes verwendet eine gut gepflegte Bibliothek für sein Sprach-Ökosystem.

JavaScript (Ajv)
import Ajv from 'ajv';

const ajv = new Ajv();

const schema = {
  type: 'object',
  properties: {
    name: { type: 'string', minLength: 1 },
    age: { type: 'integer', minimum: 0 },
    email: { type: 'string', format: 'email' }
  },
  required: ['name', 'email'],
  additionalProperties: false
};

const data = { name: 'Alice', age: 30, email: 'alice@example.com' };

const validate = ajv.compile(schema);
const valid = validate(data);
console.log(valid);          // → true
console.log(validate.errors); // → null

// Invalid data — missing required "email"
validate({ name: 'Bob', age: 25 });
console.log(validate.errors);
// → [{ instancePath: '', keyword: 'required', params: { missingProperty: 'email' } }]
Python (jsonschema)
from jsonschema import validate, ValidationError

schema = {
    "type": "object",
    "properties": {
        "name": {"type": "string", "minLength": 1},
        "age": {"type": "integer", "minimum": 0},
        "tags": {
            "type": "array",
            "items": {"type": "string"},
            "uniqueItems": True
        }
    },
    "required": ["name"]
}

# Valid data
validate(instance={"name": "Alice", "age": 30, "tags": ["admin"]}, schema=schema)
# → No exception raised

# Invalid data — wrong type for "age"
try:
    validate(instance={"name": "Alice", "age": "thirty"}, schema=schema)
except ValidationError as e:
    print(e.message)
    # → 'thirty' is not of type 'integer'
    print(e.json_path)
    # → $.age
Go (santhosh-tekuri/jsonschema)
package main

import (
    "fmt"
    "strings"
    "github.com/santhosh-tekuri/jsonschema/v5"
)

func main() {
    schemaJSON := `{
        "type": "object",
        "properties": {
            "id": { "type": "integer" },
            "status": { "enum": ["active", "inactive"] }
        },
        "required": ["id", "status"]
    }`

    compiler := jsonschema.NewCompiler()
    compiler.AddResource("schema.json", strings.NewReader(schemaJSON))
    schema, _ := compiler.Compile("schema.json")

    // Valid data
    data := map[string]interface{}{"id": 1, "status": "active"}
    err := schema.Validate(data)
    fmt.Println(err) // → <nil>

    // Invalid — missing "status"
    bad := map[string]interface{}{"id": 2}
    err = schema.Validate(bad)
    fmt.Println(err) // → validation failed: missing properties: 'status'
}
CLI (check-jsonschema)
# Install via pip
pip install check-jsonschema

# Validate a file against a schema
check-jsonschema --schemafile schema.json data.json
# → ok -- validation done

# Validate against a remote schema (e.g., GitHub Actions workflow)
check-jsonschema --builtin-schema vendor.github-workflows my-workflow.yml

# Validate multiple files at once
check-jsonschema --schemafile schema.json file1.json file2.json file3.json

Häufig gestellte Fragen

Was ist der Unterschied zwischen JSON-Validierung und JSON Schema Validierung?
JSON-Validierung prüft, ob ein String gültige JSON-Syntax hat: korrekt verschachtelte Klammern, Schlüssel in Anführungszeichen, keine abschließenden Kommas. JSON Schema Validierung geht einen Schritt weiter und prüft, ob die geparsten JSON-Daten einem strukturellen Vertrag entsprechen: korrekte Typen, Pflichtfelder vorhanden, Werte innerhalb erlaubter Bereiche. Sie benötigen gültiges JSON, bevor Sie ein Schema anwenden können — aber gültiges JSON kann trotzdem bei der Schema-Validierung scheitern.
Welchen JSON Schema Draft sollte ich verwenden?
Draft 7 ist der sicherste Standard. Er hat die breiteste Bibliotheksunterstützung über Sprachen hinweg und deckt die Schlüsselwörter ab, die die meisten Projekte benötigen: type, properties, required, enum, pattern, anyOf, oneOf, allOf und $ref. Verwenden Sie Draft 2020-12, wenn Sie Funktionen wie prefixItems für Tupel-Validierung, $dynamicRef für erweiterbare Schemas oder unevaluatedProperties für strikte Objektformen benötigen. Prüfen Sie die Dokumentation Ihrer Validator-Bibliothek, um die Draft-Unterstützung vor einem Upgrade zu bestätigen.
Wie funktioniert $ref in JSON Schema?
Das Schlüsselwort $ref ermöglicht es Ihnen, per URI auf ein anderes Schema zu verweisen, anstatt es zu duplizieren. Ein Wert wie "$ref": "#/$defs/address" verweist auf ein Schema, das im $defs-Abschnitt desselben Dokuments definiert ist. Sie können auch auf externe Dateien verweisen: "$ref": "https://example.com/schemas/address.json". In Draft 7 ersetzt $ref alle Geschwister-Schlüsselwörter im selben Objekt. In Draft 2019-09 und später werden Geschwister-Schlüsselwörter zusammen mit $ref angewendet.
Was ist der Unterschied zwischen anyOf, oneOf und allOf?
allOf verlangt, dass die Daten jedem Sub-Schema im Array entsprechen. anyOf verlangt eine Übereinstimmung mit mindestens einem Sub-Schema. oneOf verlangt eine Übereinstimmung mit genau einem Sub-Schema und schlägt fehl, wenn die Daten keinem oder mehr als einem entsprechen. Für nullbare Felder ist anyOf mit einem Typ und null üblich: {"anyOf": [{"type": "string"}, {"type": "null"}]}. Verwenden Sie oneOf, wenn Sub-Schemas sich gegenseitig ausschließen, wie bei getaggten Unions.
Kann JSON Schema verschachtelte Objekte und Arrays validieren?
Ja. Verwenden Sie das Schlüsselwort properties, um Schemas für verschachtelte Objektschlüssel zu definieren, und das Schlüsselwort items, um ein Schema zu definieren, dem jedes Array-Element entsprechen muss. Sie können diese beliebig tief verschachteln. Für Arrays, bei denen jede Position ein unterschiedliches Schema hat (Tupel), verwenden Sie prefixItems in Draft 2020-12 oder die Array-Form von items in Draft 7.
Werden die Daten, die ich in dieses Tool einfüge, an einen Server gesendet?
Nein. Der Validator läuft vollständig in Ihrem Browser mit JavaScript. Ihre JSON-Daten und Ihr Schema werden niemals an einen Server übertragen. Sie können dies überprüfen, indem Sie den Netzwerk-Inspektor Ihres Browsers während der Nutzung des Tools öffnen.
Wie validiere ich JSON Schema in einer CI/CD-Pipeline?
Verwenden Sie einen CLI-Validator wie check-jsonschema (Python/pip) oder ajv-cli (Node.js/npm). Beide akzeptieren eine Schema-Datei und eine oder mehrere Datendateien als Argumente. Fügen Sie den Validierungsbefehl als Schritt in Ihre CI-Konfiguration ein. Schlägt die Validierung fehl, beendet sich der Prozess mit einem Nicht-Null-Exit-Code, was die Pipeline blockiert. Für GitHub Actions können Sie auch die check-jsonschema Action direkt verwenden.