JSON-Schema-Validator
JSON-Dokument im Browser gegen ein JSON Schema validieren. Jeder Fehler wird mit Instanzpfad, Schlüsselwort und Schemapfad aufgelistet.
| # | Instanzpfad | Schlüsselwort | Meldung | Schemapfad |
|---|
So validieren Sie JSON gegen ein Schema
- Fügen Sie Ihr Schema in „JSON Schema“ und Ihre Daten in „JSON-Dokument“ ein oder wählen Sie einen fertigen Fall unter „Beispiel“.
- Lassen Sie „Draft“ auf „Automatisch ($schema)“, damit die im
$schemades Schemas angegebene Version verwendet wird, oder erzwingen Sie Draft 4, 7, 2019-09 oder 2020-12. - Die Validierung läuft bereits während der Eingabe; „Validieren“ startet sie erneut. „Beide formatieren“ rückt die beiden Texte neu ein.
- Lesen Sie das Ergebnis: eine grüne Zeile, wenn das Dokument gültig ist, sonst eine Fehlertabelle.
Die Fehlertabelle lesen
Jede Zeile steht für eine verletzte Regel:
- Instanzpfad ist ein JSON Pointer auf den Wert, der die Prüfung nicht bestanden hat.
/roles/1ist das zweite Element vonroles, „(Wurzel)“ ist das gesamte Dokument. - Schlüsselwort ist die verletzte Schemaregel:
type,required,minimum,pattern,format,additionalPropertiesund so weiter. - Meldung erklärt den Fehler, zum Beispiel
0 is less than 1.Die Meldungen des Validators sind auf Englisch. - Schemapfad zeigt auf das Schlüsselwort im Schema, etwa
/properties/id/minimum, damit Sie die Regel schnell finden.
Die Validierung bricht nicht beim ersten Problem ab: Alle Fehler werden aufgelistet. Scheitert eine Objekteigenschaft, meldet der Validator zuerst eine Zusammenfassung („Property “id” does not match schema“) und danach den genauen Grund. „Nur die genauesten Fehler anzeigen“ blendet diese Zusammenfassungen aus; deaktivieren Sie die Option, um die ganze Kette zu sehen. Fehler unter anyOf und oneOf bleiben immer zusammen mit den genauen Fehlern jedes Zweigs stehen, weil sie nur gemeinsam Sinn ergeben.
Was unterstützt wird
- Drafts: 4, 6 (geprüft mit den Regeln von Draft 7), 7, 2019-09 und 2020-12, einschließlich
$defs/definitions, lokalem$ref,if/then/else,dependentRequired,dependentSchemas,prefixItems,unevaluatedPropertiesundunevaluatedItems. - Formate:
date,time,date-time,duration,email,hostname,ipv4,ipv6,uri,uri-reference,uri-template,uuid,regex,json-pointerundrelative-json-pointerwerden geprüft. Unbekannte Formate werden ignoriert, wie es die Spezifikation erlaubt. - Referenzen:
$refdarf auf jede Stelle im Schema zeigen, auch auf eine dort deklarierte$id. Entfernte Schemas werden nie heruntergeladen; ein Verweis auf eine andere URL wird als nicht auflösbar gemeldet.
Dieses Tool validiert Dokumente gegen Ihr Schema. Ob das Schema selbst dem Metaschema entspricht, prüft es nicht. Es warnt aber vor unbekannten type-Namen wie "strin" oder "int" – ein häufiger Tippfehler, den Validatoren sonst stillschweigend übergehen.
Die Beispiele
- Benutzerprofil (2020-12):
required, Zeichenkettenlängen,format: email, einenuminitems,uniqueItemsundadditionalProperties: false. - Produktliste mit $ref (draft-07): ein Array, dessen Elemente auf
#/definitions/productverweisen, mit einempatternfür die Artikelnummer (SKU) und einem Preis mitexclusiveMinimum. - Konfiguration mit if/then (2019-09): ein Zertifikat, das nur im HTTPS-Modus Pflicht ist, ein
oneOfzwischen E-Mail und URI sowie Zahlengrenzen.
Zu jedem Beispiel gehört ein Dokument mit absichtlichen Fehlern, damit Sie sehen, wie die Fehlermeldungen aussehen.
Häufige Fragen
Werden meine Daten hochgeladen?
Nein. Schema und Dokument werden in Ihrem Browser validiert, es wird nichts an einen Server gesendet.
Warum ist das $ref meines Schemas „unresolved“?
Der Validator kennt nur das Schema, das Sie eingefügt haben. Einem $ref auf eine andere Datei oder URL kann er nicht folgen. Kopieren Sie die referenzierten Definitionen in $defs und verweisen Sie stattdessen auf #/$defs/….
Welchen Draft sollte ich verwenden?
Den, auf den Ihr Projekt ausgelegt ist – und deklarieren Sie ihn mit $schema. Für neue Schemas ist 2020-12 die aktuelle Version; auch OpenAPI 3.1 verwendet sie.
Warum lehnt integer den Wert 2.0 ab?
Das tut es nicht: JSON Schema behandelt 2.0 als Ganzzahl, weil der Wert ganzzahlig ist. 2.5 dagegen besteht "type": "integer" nicht.
Funktioniert das Tool offline?
Ja. Sobald die Seite geladen ist und Sie eine erste Validierung durchgeführt haben (dabei wird der Validator geladen), ist keine Verbindung mehr nötig.
Ähnliche Tools
- JSON-Formatierer und -Validator Kostenloser JSON-Formatierer und Validator: JSON im Browser formatieren, minifizieren und prüfen – Syntaxfehler mit Zeile und Spalte.
- JSONPath-Tester JSONPath-Ausdrücke im Browser an eigenem JSON testen: Filter, Slices, rekursiver Abstieg, Pfade und JSON Pointer, mit fertigen Beispielen.
- JSON-zu-YAML-Konverter JSON in YAML und YAML in JSON umwandeln, direkt im Browser – mit Ankern, Merge-Keys und Dateien mit mehreren Dokumenten. Nichts wird hochgeladen.