Utilia

Validátor JSON Schema

Over dokument JSON podľa schémy JSON Schema v prehliadači. Každá chyba je uvedená s cestou v dokumente, kľúčovým slovom a cestou v schéme.

Ako overiť JSON podľa schémy

  1. Vlož schému do Schéma JSON a údaje do Dokument JSON, alebo vyber hotový prípad z Príklad.
  2. Nechaj Verzia (draft) na Automaticky ($schema), aby sa použila verzia uvedená v $schema schémy, alebo vynúť draft 4, 7, 2019-09 či 2020-12.
  3. Overenie beží počas písania; Overiť ho spustí znova. Formátovať oba znova odsadí oba texty.
  4. Prečítaj si výsledok: zelený riadok, ak je dokument platný, inak tabuľku chýb.

Čítanie tabuľky chýb

Každý riadok je jedno porušené pravidlo:

  • Cesta v dokumente je JSON Pointer na hodnotu, ktorá neprešla. /roles/1 je druhá položka v roles; (koreň) je celý dokument.
  • Kľúčové slovo je pravidlo schémy, ktoré zlyhalo: type, required, minimum, pattern, format, additionalProperties a podobne.
  • Správa vysvetľuje zlyhanie, napríklad 0 is less than 1.
  • Cesta v schéme ukazuje na kľúčové slovo v schéme, napríklad /properties/id/minimum, takže pravidlo rýchlo nájdeš.

Overovanie sa nezastaví pri prvom probléme: vypíšu sa všetky chyby. Keď zlyhá vlastnosť objektu, validátor nahlási súhrn („Property “id” does not match schema“) a za ním presný dôvod. Zobraziť iba najpresnejšie chyby tieto súhrny skryje; ak voľbu zrušíš, uvidíš celý reťazec. Chyby pod anyOf a oneOf sa vždy ponechávajú spolu s presnými chybami každej vetvy, pretože majú zmysel iba spolu.

Čo je podporované

  • Drafty: 4, 6 (overuje sa pravidlami draftu 7), 7, 2019-09 a 2020-12, vrátane $defs/definitions, lokálneho $ref, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties a unevaluatedItems.
  • Formáty: kontrolujú sa date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer a relative-json-pointer. Neznáme formáty sa ignorujú, ako to špecifikácia dovoľuje.
  • Odkazy: $ref môže smerovať kamkoľvek v schéme, vrátane $id, ktoré schéma deklaruje. Vzdialené schémy sa nikdy nesťahujú; odkaz na inú URL sa ohlási ako nevyriešený.

Tento nástroj overuje dokumenty podľa tvojej schémy. Nekontroluje, či samotná schéma zodpovedá metaschéme, ale upozorní na neznáme názvy typov v type, napríklad "strin" alebo "int", čo je častý preklep, ktorý validátory inak potichu ignorujú.

Príklady

  • Profil používateľa (2020-12): required, dĺžky reťazcov, format: email, enum v items, uniqueItems a additionalProperties: false.
  • Zoznam produktov s $ref (draft-07): pole, ktorého položky odkazujú na #/definitions/product, so pattern pre SKU a cenou s exclusiveMinimum.
  • Konfigurácia s if/then (2019-09): certifikát vyžadovaný len v režime HTTPS, oneOf medzi e‑mailom a URI a číselné limity.

Každý príklad prichádza s dokumentom so zámernými chybami, takže uvidíš, ako chyby vyzerajú.

Často kladené otázky

Nahrávajú sa moje údaje?

Nie. Schéma aj dokument sa overujú v tvojom prehliadači; nič sa neodosiela na server.

Prečo je `$ref` v mojej schéme „nevyriešený“?

Validátor pozná iba schému, ktorú si vložil. $ref na iný súbor alebo URL sa nedá nasledovať; skopíruj odkazované definície do $defs a odkazuj na #/$defs/….

Ktorý draft mám použiť?

Ten, ktorý cieli tvoj projekt, a deklaruj ho cez $schema. Pre nové schémy je aktuálna verzia 2020-12; používa ju aj OpenAPI 3.1.

Prečo integer odmieta 2.0?

Neodmieta: JSON Schema berie 2.0 ako celé číslo, pretože jeho hodnota je celá. 2.5 pri "type": "integer" zlyhá.

Funguje to offline?

Áno. Po načítaní stránky a prvom overení (ktoré načíta validátor) už nie je potrebné pripojenie.