Utilia

JSON Schema validator

Proveri JSON dokument prema JSON šemi u pregledaču. Svaka greška se navodi sa putanjom instance, ključnom rečju i putanjom u šemi.

Kako da proveriš JSON prema šemi

  1. Nalepi šemu u JSON Schema i podatke u JSON dokument ili izaberi gotov slučaj iz Primer.
  2. Ostavi Verzija (draft) na Automatski ($schema) da se koristi verzija koju navodi $schema u šemi, ili izaberi draft 4, 7, 2019-09 ili 2020-12.
  3. Provera se izvršava dok kucaš; Proveri je pokreće ponovo. Formatiraj oba ponovo uvlači oba teksta.
  4. Pročitaj rezultat: zelen red kad je dokument ispravan, a inače tabelu grešaka.

Poruke o greškama koje vraća sam validator su na engleskom jeziku, dok je ostatak stranice na srpskom.

Kako se čita tabela grešaka

Svaki red je jedno pravilo koje nije ispunjeno:

  • Putanja instance je JSON Pointer do vrednosti koja nije prošla proveru. /roles/1 je druga stavka u roles; (koren) je ceo dokument.
  • Ključna reč je pravilo šeme koje nije ispunjeno: type, required, minimum, pattern, format, additionalProperties i tako dalje.
  • Poruka objašnjava grešku, na primer 0 is less than 1.
  • Putanja u šemi pokazuje ključnu reč unutar šeme, poput /properties/id/minimum, pa pravilo brzo pronalaziš.

Provera se ne zaustavlja na prvom problemu: navode se sve greške. Kad svojstvo objekta ne prođe proveru, validator prijavljuje rezime („Property “id” does not match schema“), a zatim tačan razlog. Prikaži samo najpreciznije greške skriva te rezimee; ukloni oznaku da vidiš ceo lanac. Greške unutar anyOf i oneOf uvek se čuvaju zajedno sa preciznim greškama svake grane, jer imaju smisla samo zajedno.

Šta je podržano

  • Verzije (drafts): 4, 6 (proverava 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: proveravaju 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 ignorišu, kako specifikacija dozvoljava.
  • Reference: $ref može da pokazuje bilo gde unutar šeme, uključujući na $id koji ona deklariše. Udaljene šeme se nikada ne preuzimaju; referenca na drugi URL prijavljuje se kao nerazrešena.

Ovaj alat proverava dokumente prema tvojoj šemi. Ne proverava da li sama šema prati meta-šemu, ali upozorava na nepoznate nazive type, poput "strin" ili "int", što je čest previd koji validatori inače tiho ignorišu.

Primeri

  • Profil korisnika (2020-12): required, dužine stringova, format: email, enum unutar items, uniqueItems i additionalProperties: false.
  • Lista proizvoda sa $ref (draft-07): niz čije stavke upućuju na #/definitions/product, sa pattern za SKU i cenom sa exclusiveMinimum.
  • Konfiguracija sa if/then (2019-09): sertifikat koji se zahteva samo u HTTPS režimu, oneOf između e-pošte i URI-ja i numerička ograničenja.

Uz svaki primer ide dokument sa namernim greškama, pa možeš da vidiš kako greške izgledaju.

Česta pitanja

Da li se moji podaci otpremaju?

Ne. Šema i dokument se proveravaju u tvom pregledaču; ništa se ne šalje serveru.

Zašto je $ref u mojoj šemi „nerazrešen“?

Validator zna samo šemu koju si nalepio. $ref na drugi fajl ili URL ne može da se prati; kopiraj referencirane definicije u $defs i umesto toga upućuj na #/$defs/….

Koji draft da koristim?

Koristi onaj koji tvoj projekat cilja i deklariši ga pomoću $schema. Za nove šeme, 2020-12 je aktuelna verzija; koristi je i OpenAPI 3.1.

Zašto integer odbija 2.0?

Ne odbija: JSON Schema tretira 2.0 kao ceo broj jer je njegova vrednost cela. 2.5 ne prolazi "type": "integer".

Da li radi bez interneta?

Da. Kad se stranica učita i izvršiš prvu proveru (koja učitava validator), veza više nije potrebna.