Utilia

JSON Schema tikrintuvas

Patikrink JSON dokumentą pagal JSON Schema naršyklėje. Kiekviena klaida išvardyta su egzemplioriaus keliu, raktažodžiu ir schemos keliu.

Kaip tikrinti JSON pagal schemą

  1. Įklijuok schemą į JSON Schema, o duomenis – į JSON dokumentas, arba pasirink paruoštą atvejį iš Pavyzdys.
  2. Palik Versija ties Automatiškai ($schema), kad būtų naudojama schemos $schema nurodyta versija, arba priverstinai pasirink draft 4, 7, 2019-09 ar 2020-12.
  3. Tikrinimas vyksta tau rašant; Tikrinti paleidžia jį iš naujo. Formatuoti abu pertvarko abiejų tekstų įtrauką.
  4. Perskaityk rezultatą: žalia eilutė, kai dokumentas tinkamas, kitu atveju – klaidų lentelė.

Klaidų pranešimus sukuria pats tikrintuvas, ir jie pateikiami anglų kalba. Lentelės stulpelių pavadinimai ir kita sąsaja yra lietuviški.

Klaidų lentelės skaitymas

Kiekviena eilutė yra viena nepavykusi taisyklė:

  • Egzemplioriaus kelias yra JSON Pointer į reikšmę, kuri netiko. /roles/1 yra antras roles elementas; (šaknis) yra visas dokumentas.
  • Raktažodis yra schemos taisyklė, kuri nepavyko: type, required, minimum, pattern, format, additionalProperties ir pan.
  • Pranešimas paaiškina nesėkmę, pavyzdžiui, 0 is less than 1.
  • Schemos kelias nurodo raktažodį schemos viduje, pavyzdžiui, /properties/id/minimum, kad taisyklę greitai rastum.

Tikrinimas nesustoja ties pirma problema: išvardijamos visos klaidos. Kai objekto savybė netinka, tikrintuvas praneša santrauką („Property “id” does not match schema“), o po jos – tikslią priežastį. Rodyti tik tiksliausias klaidas paslepia tas santraukas; atžymėk, kad pamatytum visą grandinę. Klaidos po anyOf ir oneOf visada paliekamos kartu su kiekvienos šakos tikslesnėmis klaidomis, nes jos prasmingos tik kartu.

Kas palaikoma

  • Versijos: 4, 6 (tikrinama pagal draft 7 taisykles), 7, 2019-09 ir 2020-12, įskaitant $defs/definitions, vietinį $ref, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties ir unevaluatedItems.
  • Formatai: tikrinami date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer ir relative-json-pointer. Nežinomi formatai ignoruojami, kaip leidžia specifikacija.
  • Nuorodos: $ref gali rodyti bet kur schemos viduje, įskaitant jos deklaruojamą $id. Nuotolinės schemos niekada neatsisiunčiamos; nuoroda į kitą URL pranešama kaip neišspręsta.

Šis įrankis tikrina dokumentus pagal tavo schemą. Jis netikrina, ar pati schema atitinka metaschemą, bet įspėja apie nežinomus type pavadinimus, pavyzdžiui, "strin" ar "int", – dažną rašybos klaidą, kurią kiti tikrintuvai tyliai ignoruoja.

Pavyzdžiai

  • Naudotojo profilis (2020-12): required, eilučių ilgiai, format: email, enum elementuose, uniqueItems ir additionalProperties: false.
  • Produktų sąrašas su $ref (draft-07): masyvas, kurio elementai nurodo #/definitions/product, su SKU pattern ir exclusiveMinimum kaina.
  • Konfigūracija su if/then (2019-09): sertifikatas reikalingas tik HTTPS režimu, oneOf tarp el. pašto ir URI bei skaitinės ribos.

Prie kiekvieno pavyzdžio pateikiamas dokumentas su sąmoningomis klaidomis, kad matytum, kaip atrodo klaidos.

Dažnai užduodami klausimai

Ar mano duomenys įkeliami?

Ne. Schema ir dokumentas tikrinami tavo naršyklėje; į serverį nieko nesiunčiama.

Kodėl mano schemos $ref „neišspręstas“?

Tikrintuvas žino tik tavo įklijuotą schemą. $ref į kitą failą ar URL sekti negalima; nukopijuok nurodomus apibrėžimus į $defs ir nurodyk #/$defs/….

Kurią versiją naudoti?

Naudok tą, kurią taiko tavo projektas, ir deklaruok ją su $schema. Naujoms schemoms 2020-12 yra dabartinė versija; ją naudoja ir OpenAPI 3.1.

Kodėl integer atmeta 2.0?

Neatmeta: JSON Schema 2.0 laiko sveikuoju skaičiumi, nes jo reikšmė sveika. 2.5 neatitinka "type": "integer".

Ar veikia be interneto?

Taip. Kai puslapis įkeltas ir atlikai pirmą tikrinimą (kurio metu įkeliamas tikrintuvas), ryšio nebereikia.