JSON-Schema-Validator
Validieren Sie JSON gegen ein JSON Schema (Draft 2020-12) und erhalten Sie Fehler mit vollständigen Instanzpfaden
JSON
Schema
JSON-Schema-Validator
Validieren Sie JSON gegen ein JSON Schema (Draft 2020-12) und erhalten Sie Fehler mit vollständigen Instanzpfaden
Funktionen
- Validiert JSON-Instanzen gegen jedes JSON Schema mit Ajv (der De-facto-Referenzimplementierung), mit vollständiger Unterstützung für Draft-07, 2019-09 und 2020-12
- Fehlerbericht listet jedes Versagen als `Pfad: Nachricht` — Instanzpfade folgen der RFC-6901-JSON-Pointer-Notation, so können Sie direkt zum fehlerhaften Knoten in verschachtelten Daten springen
- Alle Fehler werden in einem Durchgang (allErrors: true) gemeldet statt am ersten zu stoppen — alle Probleme auf einmal sehen
- Strict-Mode-Compilation deaktiviert, sodass nicht-standardisierte oder erweiterte Schemas weiterhin kompilieren; allowUnionTypes ist aktiviert für Schemas mit Union-Typen
- Beispiel-laden-Schaltfläche füllt beide Bereiche mit einem kleinen Beispiel (Objekt mit erforderlichem id und name plus tags-Array), damit Sie den Validator ohne Tippen arbeiten sehen
- Fehler-kopieren-Schaltfläche gibt die gesamte Fehlerliste als zeilengetrennten `Pfad: Nachricht`-Block aus — direkt in ein Ticket oder Test-Fixture einfügen
- Rein clientseitig: Ajv läuft in Ihrem Browser, kein JSON oder Schema wird auf einen Server hochgeladen, und das Tool funktioniert offline, sobald die Seite geladen ist
- Separate Parsefehler-Berichterstattung unterscheidet JSON-fehlerhafte Eingaben von Schema-Verletzungs-Fehlern — Sie wissen immer, ob Syntax oder Vertrag zu reparieren ist
Anleitung
- Fügen Sie die zu validierende JSON-Instanz in das linke Textfeld ein.
- Fügen Sie Ihr JSON Schema in das rechte Textfeld ein — nutzen Sie Draft 2020-12, 2019-09 oder Draft-07; Ajv wählt automatisch anhand von $schema.
- Klicken Sie Validieren. Wenn beide Eingaben sauber parsen, kompiliert Ajv das Schema und führt die Validierung aus.
- Lesen Sie das Ergebnis: ein grüner Gültig-Banner bedeutet, dass die Instanz passt; andernfalls zeigt jeder Fehler den JSON-Pointer-Pfad und die menschenlesbare Ajv-Nachricht.
- Klicken Sie Fehler kopieren, um den vollständigen Bericht als `Pfad: Nachricht`-Zeilen zum Teilen oder in einer Fixture-Datei zu speichern abzurufen.
- Nutzen Sie Beispiel laden, um beide Bereiche mit einem funktionierenden Beispiel zu füllen, falls Sie das Verhalten vor dem Einfügen Ihrer eigenen Daten überprüfen wollen.
Tipps & Best Practices
- Fügen Sie immer ein $schema-Feld in Ihr Schema ein, damit Ajv die richtige Draft-Semantik wählt.
- Bevorzugen Sie additionalProperties: false während der Entwicklung, um Tippfehler in Feldnamen früh zu erkennen.
- Nutzen Sie $defs (oder definitions in Draft-07), um gemeinsame Subschemas zu teilen — Refs machen Schemas DRY und überprüfbar.
- Wenn die Validierung lokal besteht, aber in CI fehlschlägt, prüfen Sie, ob in beiden Umgebungen dieselbe Ajv-Version und dieselben Drafts verwendet werden.
- Speichern Sie die Fehler-kopieren-Ausgabe in Ihren Testfixtures, damit Regressionen als Schema-Verletzungs-Diffs auftauchen.
FAQ
Welche JSON-Schema-Drafts werden unterstützt?
Draft-07, Draft 2019-09 und Draft 2020-12. Ajv wählt das Meta-Schema automatisch anhand des $schema-Feldes Ihres Schemas; wenn weggelassen, fällt es auf Draft-07-Semantik zurück. Die neuere Spec 2020-12 ersetzt definitions durch $defs und items durch prefixItems/items — sowohl alte als auch neue Schlüsselwörter werden akzeptiert.
Was bedeutet der Pfad in einem Fehler?
Ajv meldet instancePath in RFC-6901-JSON-Pointer-Notation: '/users/0/email' bedeutet "die email-Eigenschaft des ersten Benutzers". Die Wurzel ist die leere Zeichenkette (in der UI als $ dargestellt). So lässt sich das fehlerhafte Feld in verschachtelten Daten leicht zurückverfolgen.
Warum kompiliert mein Schema nicht?
Häufige Ursachen: fehlerhaftes JSON (Komma zu viel, einfache Anführungszeichen, ungetypte Schlüssel); ein $ref, der auf eine nicht existierende Definition zeigt; oder ein Schlüsselwort im Strict-Mode, das Ajv nicht erkennt. Die Schema-Parsefehler-Anzeige zeigt Ajvs exakten Compile-Fehler; Strict-Mode ist hier bereits deaktiviert, sodass die meisten nicht-standardisierten Schemas weiter kompilieren.
Warum erhalte ich einen "unknown keyword"- oder "unknown format"-Fehler?
JSON-Schema-Standard-Schlüsselwörter (type, required, properties usw.) sind eingebaut. Benutzerdefinierte Formatnamen wie "date-time", "uri", "email" werden standardmäßig nicht validiert — Ajv behandelt sie als Annotationen, sofern ajv-formats nicht geladen wird. Wenn Formate geprüft werden müssen, validieren Sie in einem Build-Schritt mit installiertem ajv-formats.
Stoppt der Validator beim ersten Fehler?
Nein. Ajv ist mit allErrors: true konfiguriert, sodass jeder Fehler gemeldet wird. Bei tief verschachtelten Fehlern kann das ausführlich sein; wenn Sie nur den ersten wollen, übergeben Sie JSON+Schema Ihrem eigenen ajv()-Aufruf mit allErrors: false im Build.
Funktioniert das für sehr große JSON-Dokumente?
Ja, aber im Code ist das richtige Muster einmal-kompilieren-vielfach-validieren. Dieses Tool kompiliert bei jedem Validieren-Klick neu, was für Dev-Time-Checks in Ordnung ist, aber nicht für produktive Hot Paths. Der hier verwendete Ajv-Build ist das Standard-ESM-Bundle; rechnen Sie mit Millisekunden-Kompilierzeiten für typische Schemas.
Werden mein JSON und Schema irgendwohin gesendet?
Nein. Beide Textfelder bleiben in Ihrem Browser; Ajv läuft lokal; wir loggen, speichern oder telemetrisieren den Inhalt nicht. Sie können das im DevTools-Netzwerk-Tab überprüfen — beim Klicken auf Validieren gibt es keine Netzwerkanfrage.
Was ist der Unterschied zu dem Schema-Tab in JSON Formatter?
Der Schema-Tab des JSON Formatters nutzt denselben Ajv-basierten SchemaService für einmalige Prüfungen neben Formatierung, JSONPath und Baumansicht. Dieser eigenständige Validator bietet Ihnen zwei große Einfüge-Bereiche, einen Beispiel-Lader, Fehler-Kopier-Export und eine einzige dedizierte URL zum Bookmarken oder Teilen — besser, wenn Validierung Ihre einzige Aufgabe ist.