Utilia

JSON Schema validator

Provjeri JSON dokument prema JSON Schemi u pregledniku. Svaka greška navedena je s putanjom instance, ključnom riječi i putanjom u shemi.

Kako provjeriti JSON prema shemi

  1. Zalijepi svoju shemu u JSON Schema i svoje podatke u JSON dokument ili odaberi gotov slučaj iz Primjer.
  2. Ostavi Verzija (draft) na Automatski ($schema) da se koristi verzija koju navodi $schema sheme ili prisilno odaberi draft 4, 7, 2019-09 ili 2020-12.
  3. Provjera se izvodi dok tipkaš; Provjeri je pokreće ponovno. Formatiraj oboje ponovno uvlači oba teksta.
  4. Pročitaj rezultat: zelen redak kad je dokument valjan, inače tablica grešaka.

Čitanje tablice grešaka

Svaki redak je jedno pravilo koje nije zadovoljeno:

  • Putanja instance je JSON Pointer do vrijednosti koja nije prošla provjeru. /roles/1 je druga stavka polja roles; (korijen) je cijeli dokument.
  • Ključna riječ je pravilo sheme koje nije zadovoljeno: type, required, minimum, pattern, format, additionalProperties i tako dalje.
  • Poruka objašnjava grešku, na primjer 0 is less than 1.
  • Putanja sheme pokazuje ključnu riječ unutar sheme, poput /properties/id/minimum, pa pravilo možeš brzo pronaći.

Provjera se ne zaustavlja na prvom problemu: navode se sve greške. Kad svojstvo objekta ne prođe, validator prijavljuje sažetak („Property “id” does not match schema“), a zatim točan razlog. Prikaži samo najodređenije greške skriva te sažetke; isključi opciju da vidiš cijeli lanac. Greške pod anyOf i oneOf uvijek se čuvaju zajedno s određenim greškama svake grane jer imaju smisla samo zajedno.

Poruke o greškama koje daje validator na engleskom su jeziku, dok je ostatak sučelja preveden.

Što je podržano

  • Drafti: 4, 6 (provjerava se pravilima drafta 7), 7, 2019-09 i 2020-12, uključujući $defs/definitions, lokalni $ref, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties i unevaluatedItems.
  • Formati: provjeravaju se date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer i relative-json-pointer. Nepoznati formati se zanemaruju, kako specifikacija dopušta.
  • Reference: $ref može pokazivati bilo gdje unutar sheme, uključujući $id koji ona sama deklarira. Udaljene sheme se nikada ne preuzimaju; referenca na drugi URL prijavljuje se kao neriješena.

Ovaj alat provjerava dokumente prema tvojoj shemi. Ne provjerava prati li sama shema meta-shemu, ali upozorava na nepoznate nazive tipova (type) poput "strin" ili "int", čestu tipfelersku grešku koju validatori inače tiho zanemaruju.

Primjeri

  • Korisnički profil (2020-12): required, duljine nizova, format: email, enum unutar items, uniqueItems i additionalProperties: false.
  • Popis proizvoda s $ref (draft-07): polje čije stavke upućuju na #/definitions/product, s pattern za šifru artikla i cijenom s exclusiveMinimum.
  • Konfiguracija s if/then (2019-09): certifikat obavezan samo u HTTPS načinu, oneOf između e-pošte i URI-ja te brojčana ograničenja.

Svaki primjer dolazi s dokumentom koji sadrži namjerne pogreške, pa možeš vidjeti kako greške izgledaju.

Česta pitanja

Šalju li se moji podaci?

Ne. Shema i dokument provjeravaju se u tvom pregledniku; ništa se ne šalje na poslužitelj.

Zašto je `$ref` u mojoj shemi „neriješen“?

Validator poznaje samo shemu koju si zalijepio. $ref na drugu datoteku ili URL ne može se slijediti; kopiraj referencirane definicije u $defs i umjesto toga upućuj na #/$defs/….

Koji draft trebam koristiti?

Koristi onaj koji tvoj projekt cilja i deklariraj ga pomoću $schema. Za nove sheme 2020-12 je aktualna verzija; koristi je i OpenAPI 3.1.

Zašto integer odbija 2.0?

Ne odbija: JSON Schema tretira 2.0 kao cijeli broj jer je njegova vrijednost cjelobrojna. 2.5 ne zadovoljava "type": "integer".

Radi li izvan mreže?

Da. Nakon što se stranica učita i izvedeš prvu provjeru (koja učitava validator), veza nije potrebna.