onlinetools.dev

JSON-Schema-Validator & -Generator

JSON gegen ein Schema validieren oder ein Schema aus Beispieldaten ableiten

Läuft lokal
loading…
Über dieses Tool

Zwei Richtungen derselben Disziplin: Füge Beispiel-JSON ein und erhalte ein daraus abgeleitetes draft-07-Schema, oder füge Daten plus Schema ein und sieh jeden Verstoß mit seinem JSON-Pfad gelistet. Die Validierung läuft auf Ajv — derselben Engine, die die meisten Node-Services nutzen — was hier besteht, besteht also auch in CI.

Die Ableitung denkt produktionsnah: Objekt-Keys werden zu typisierten Properties und required-Einträgen, Arrays vereinigen die Formen all ihrer Mitglieder, Integer werden von Floats unterschieden, und Keys, die nur in manchen Array-Mitgliedern vorkommen, bleiben korrekterweise aus required heraus. Das Ergebnis ist ein Ausgangspunkt, den du mit Formaten, Wertebereichen und Patterns verschärfst.

API-Antworten und Config-Dateien sind genau die Daten, die du am wenigsten auf einem fremden Server sehen willst. Ableitung und Validierung laufen beide vollständig in deinem Browser.

Häufige Fragen

Welcher JSON-Schema-Draft wird unterstützt?
Die Ableitung erzeugt draft-07, den über Editoren und Validatoren hinweg am breitesten unterstützten Draft. Die Validierung akzeptiert draft-07 und die früheren Drafts, die Ajv im Non-Strict-Modus versteht; Keywords aus 2019-09/2020-12 funktionieren größtenteils ebenfalls, da unbekannte Keywords ignoriert werden, statt fatal zu sein.
Was bedeutet das $ in den Verstoß-Pfaden?
Es ist die Wurzel des Dokuments, im JSONPath-Stil: $.age meint die Top-Level-Property age, $.items.2.name den Namen des dritten Array-Elements. Ein leerer Pfad ($) heißt, der Verstoß betrifft die Dokumentwurzel selbst — falscher Typ oder eine fehlende Pflicht-Property.
Warum ist das abgeleitete Schema strenger oder lockerer als erwartet?
Es beschreibt exakt das Beispiel, das du geliefert hast: Überall vorhandene Felder werden required, und nur beobachtete Typen sind erlaubt. Füttere für ein allgemeineres Schema ein vielfältigeres Beispiel (ein Array repräsentativer Objekte) und justiere dann von Hand — die Ableitung kann deine Absicht nicht kennen.
Unterstützt die Validierung format, pattern und andere Constraint-Keywords?
Strukturelle Keywords (type, required, properties, items, enum, minimum, pattern…) werden voll durchgesetzt. Format-Strings wie "email" oder "date-time" werden nicht geprüft — das spiegelt die JSON-Schema-Spezifikation, in der format standardmäßig Annotation ist, und vermeidet falsche Sicherheit.
Verwandte Tools