Fügen Sie Schema und Daten ein, um jede Abweichung zu sehen; Erzeugen macht aus einem Beispiel einen Schemaentwurf und weist nach, dass der Entwurf das Beispiel akzeptiert. Nichts verlässt den Browser.
Läuft lokal in deinem BrowserVerwenden Sie ein JSON-Schema-Objekt; Verweise, die mit #/ beginnen, werden auf dieser Seite aufgelöst.
Fügen Sie zu validierende Daten oder ein repräsentatives Beispiel ein, um ein Ausgangsschema zu erzeugen.
Die Prüfung liest type, enum, const, allOf, anyOf, oneOf, not und if/then/else; properties, patternProperties, additionalProperties, propertyNames, required, dependentRequired, minProperties und maxProperties; items, prefixItems, additionalItems, minItems, maxItems, uniqueItems und contains; minLength, maxLength, pattern und die Formate email, uuid, date, time, date-time, uri, uri-reference, ipv4, ipv6 und hostname; minimum, maximum, exclusiveMinimum, exclusiveMaximum und multipleOf; dazu lokale $ref-Werte, auch Verweise, die durch die Daten rekursieren. Die Boolean-Form von exclusiveMinimum/exclusiveMaximum aus draft-04 und die Array-Form von items werden ebenfalls gelesen. Jedes andere Schlüsselwort und Format bleibt unangetastet; prüfen Sie Produktionsregeln mit einem konformen Validator.
Schema und Daten bleiben im Browser; nichts wird hochgeladen. Jedes Problem wird mit dem Pfad aufgelistet, an dem es gefunden wurde, die Liste endet nach 100 Problemen, und Erzeugen schreibt einen Schemaentwurf aus Ihrem Beispiel und prüft das Beispiel erneut dagegen.
Fügen Sie ein JSON Schema und ein JSON-Dokument ein, um jede Stelle zu sehen, an der die Daten vom Schema abweichen. Die Prüfung läuft in diesem Tab: nichts wird hochgeladen, und die Seite arbeitet auch ohne Netzwerkverbindung weiter.
Erzeugen arbeitet andersherum. Es liest Ihr Beispiel, schreibt einen Schemaentwurf — Array-Elemente über alle Einträge zusammengeführt, required auf die Schlüssel begrenzt, die jedes Objekt mitbringt — und prüft das Beispiel gegen diesen Entwurf. Ein Entwurf, der sein eigenes Beispiel nicht beschreibt, wird also gemeldet statt still gespeichert.
type, enum, const, allOf, anyOf, oneOf, not und if/then/else; properties, patternProperties, additionalProperties, propertyNames, required, dependentRequired, minProperties und maxProperties; items, prefixItems, additionalItems, minItems, maxItems, uniqueItems und contains; minimum, maximum, exclusiveMinimum, exclusiveMaximum und multipleOf; minLength, maxLength und pattern; dazu lokale $ref-Werte, auch Verweise, die durch die Daten rekursieren. Die Boolean-Form von exclusiveMinimum/exclusiveMaximum aus draft-04 und die Array-Form von items werden ebenfalls gelesen.
Die Formatprüfungen decken email, uuid, date, time, date-time, uri, uri-reference, ipv4, ipv6 und hostname ab. Ein Datum wie 2024-02-30 und eine Uhrzeit wie 99:99 werden abgelehnt, weil Kalender und Uhr geprüft werden, nicht nur die Form des Textes; jeder andere Formatname bleibt unangetastet. Die Spezifikation behandelt format als Annotation, diese Seite ist also strenger als ein reiner Leser.
enum, const und uniqueItems vergleichen Werte strukturell: {"a": 1, "b": 2} und {"b": 2, "a": 1} sind ein Wert, nicht zwei. Die vorherige Version dieses Werkzeugs verglich den JSON-Text und lag in beide Richtungen falsch: Sie lehnte einen gültigen enum-Wert ab und akzeptierte ein doppeltes Array-Element.
minLength und maxLength zählen Code-Punkte, ein als Surrogatpaar geschriebenes Emoji zählt also als ein Zeichen.
Array-Elemente werden über alle Einträge zusammengeführt: Ein gemischtes Array ergibt eine anyOf-Liste, Objekte werden Eigenschaft für Eigenschaft zusammengeführt, required bleibt auf die Schlüssel begrenzt, die jedes Objekt mitbringt. Ein leeres Objekt oder Array erzeugt keine leere required-Liste.
Zeichenketten, die wie eine UUID, eine E-Mail-Adresse, ein Datum, eine Zeitangabe oder ein URI aussehen, bekommen den passenden Formathinweis; der Entwurf ist damit nützlicher als ein bloßer Typ — brauchbar für einen ersten Durchlauf, nicht als Vertrag.
Die Problemliste endet bei 100 Einträgen. Verschachtelung tiefer als 4000 Ebenen bricht die Prüfung mit einer Meldung ab, statt den Browser zu stürzen, und ein zirkulärer #/-Verweis wird gemeldet statt endlos verfolgt.
Muster und Formate nutzen die RegExp-Engine des Browsers; 20.000 Array-Elemente oder Objekteigenschaften werden in etwa 20 ms geprüft.