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

  1. Fügen Sie die zu validierende JSON-Instanz in das linke Textfeld ein.
  2. 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.
  3. Klicken Sie Validieren. Wenn beide Eingaben sauber parsen, kompiliert Ajv das Schema und führt die Validierung aus.
  4. 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.
  5. Klicken Sie Fehler kopieren, um den vollständigen Bericht als `Pfad: Nachricht`-Zeilen zum Teilen oder in einer Fixture-Datei zu speichern abzurufen.
  6. 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.