onlinetools.dev

JSON Schema-validator & -generator

Valideer JSON tegen een schema, of leid een schema af uit voorbeelddata

Draait lokaal
loading…
Over deze tool

Twee richtingen van dezelfde discipline: plak voorbeeld-JSON en krijg er een draft-07-schema uit afgeleid, of plak data plus een schema en zie elke overtreding met zijn JSON-pad. De validatie draait op Ajv — dezelfde engine die de meeste Node-services gebruiken — dus wat hier slaagt, slaagt in CI.

De inferentie is productiegericht: objectsleutels worden getypeerde properties en required-entries, arrays voegen de vormen van al hun leden samen, gehele getallen worden onderscheiden van floats, en sleutels die maar in sommige arrayleden voorkomen blijven terecht buiten required. Het resultaat is een startpunt dat je aanscherpt met formats, bereiken en patronen.

API-antwoorden en configuratiebestanden zijn precies de data die je het minst op een server van derden wilt hebben. Zowel de inferentie als de validatie draait volledig in je browser.

Veelgestelde vragen

Welke JSON Schema-draft wordt ondersteund?
De inferentie levert draft-07, de breedst ondersteunde draft in editors en validators. De validatie accepteert draft-07 en de eerdere drafts die Ajv in niet-strikte modus begrijpt; de keywords van 2019-09/2020-12 werken meestal ook, omdat onbekende keywords genegeerd worden in plaats van fataal te zijn.
Wat betekent de $ in overtredingspaden?
Het is de root van het document, in JSONPath-stijl: $.age betekent de property age op het hoogste niveau, $.items.2.name de name van het derde arrayelement. Een leeg pad ($) betekent dat de overtreding de documentroot zelf betreft — verkeerd type, of een ontbrekende verplichte property.
Waarom is het afgeleide schema strenger of losser dan ik verwachtte?
Het beschrijft exact het voorbeeld dat je gaf: velden die overal aanwezig zijn worden verplicht, en alleen waargenomen typen zijn toegestaan. Voer het een gevarieerder voorbeeld (een array van representatieve objecten) voor een algemener schema, en pas het daarna met de hand aan — de inferentie kan de bedoeling niet kennen.
Ondersteunt de validatie format, pattern en andere beperkingskeywords?
Structurele keywords (type, required, properties, items, enum, minimum, pattern…) worden volledig afgedwongen. Formatstrings als "email" of "date-time" worden niet gecontroleerd — dat volgt de JSON Schema-specificatie, waarin format standaard annotatie is, en voorkomt vals vertrouwen.
Gerelateerde tools