Utilia

Validátor JSON Schema

Ověř dokument JSON podle schématu JSON Schema přímo v prohlížeči. Každá chyba je uvedena s cestou v instanci, klíčovým slovem a cestou ve schématu.

Jak ověřit JSON podle schématu

  1. Vlož své schéma do pole JSON Schema a data do pole Dokument JSON, nebo vyber hotový případ v části Příklad.
  2. Nech Verzi draftu na Automaticky ($schema), aby se použila verze uvedená ve $schema schématu, nebo vynuť draft 4, 7, 2019-09 či 2020-12.
  3. Ověřování běží při psaní a tlačítko Ověřit ho spustí znovu. Formátovat obojí znovu odsadí oba texty.
  4. Přečti si výsledek: zelený řádek, pokud je dokument platný, jinak tabulku chyb.

Jak číst tabulku chyb

Každý řádek je jedno porušené pravidlo:

  • Cesta v instanci je ukazatel JSON Pointer na hodnotu, která selhala. /roles/1 je druhá položka pole roles, (kořen) je celý dokument.
  • Klíčové slovo je pravidlo schématu, které selhalo: type, required, minimum, pattern, format, additionalProperties a tak dále.
  • Zpráva vysvětluje selhání, například 0 is less than 1.
  • Cesta ve schématu ukazuje na klíčové slovo uvnitř schématu, například /properties/id/minimum, takže pravidlo rychle najdeš.

Ověřování se nezastaví u prvního problému: vypíšou se všechny chyby. Když selže vlastnost objektu, validátor ohlásí souhrn („Property “id” does not match schema“) a za ním přesný důvod. Zobrazit jen nejkonkrétnější chyby tyto souhrny skryje, zrušením volby uvidíš celý řetězec. Chyby pod anyOf a oneOf se vždy ponechávají společně s konkrétními chybami každé větve, protože dávají smysl jen dohromady.

Chybová hlášení validátoru jsou v angličtině.

Co je podporováno

  • Drafty: 4, 6 (ověřuje se pravidly draftu 7), 7, 2019-09 a 2020-12, včetně $defs/definitions, lokálního $ref, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties a unevaluatedItems.
  • Formáty: kontrolují se date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer a relative-json-pointer. Neznámé formáty se ignorují, jak specifikace dovoluje.
  • Odkazy: $ref může ukazovat kamkoli uvnitř schématu, včetně $id, které schéma deklaruje. Vzdálená schémata se nikdy nestahují: odkaz na jinou adresu URL se ohlásí jako nevyřešený.

Nástroj ověřuje dokumenty podle tvého schématu. Nekontroluje, zda samotné schéma odpovídá metaschématu, ale upozorní na neznámé názvy type, například "strin" nebo "int", což je častý překlep, který validátory jinak tiše ignorují.

Příklady

  • Profil uživatele (2020-12): required, délky řetězců, format: email, enum uvnitř items, uniqueItems a additionalProperties: false.
  • Seznam produktů s $ref (draft-07): pole, jehož položky odkazují na #/definitions/product, se vzorem pattern pro SKU a cenou s exclusiveMinimum.
  • Konfigurace s if/then (2019-09): certifikát vyžadovaný jen v režimu HTTPS, oneOf mezi e-mailem a URI a číselné limity.

Ke každému příkladu patří dokument se záměrnými chybami, takže uvidíš, jak chyby vypadají.

Časté dotazy

Nahrávají se moje data?

Ne. Schéma i dokument se ověřují ve tvém prohlížeči a nic se neodesílá na server.

Proč je `$ref` v mém schématu „nevyřešený“?

Validátor zná jen schéma, které jsi vložil. $ref na jiný soubor nebo adresu URL nelze následovat: zkopíruj odkazované definice do $defs a ukazuj na #/$defs/….

Který draft mám použít?

Ten, na který cílí tvůj projekt, a deklaruj ho pomocí $schema. U nových schémat je 2020-12 aktuální verzí, používá ji i OpenAPI 3.1.

Proč integer odmítá 2.0?

Neodmítá: JSON Schema bere 2.0 jako celé číslo, protože jeho hodnota je celá. 2.5 u "type": "integer" selže.

Funguje to offline?

Ano. Jakmile se stránka načte a provedeš první ověření (které načte validátor), žádné připojení už není potřeba.