Utilia

JSON Schema -validaattori

Validoi JSON-dokumentti JSON Schemaa vastaan selaimessa. Jokainen virhe luetellaan instanssipolkuineen, avainsanoineen ja skeeman polkuineen.

Näin validoit JSONin skeemaa vastaan

  1. Liitä skeemasi kenttään JSON Schema ja datasi kenttään JSON-dokumentti tai valitse valmis tapaus kohdasta Esimerkki.
  2. Jätä Versio arvoon Automaattinen ($schema) käyttääksesi skeeman $schema-arvon nimeämää versiota tai pakota draft 4, 7, 2019-09 tai 2020-12.
  3. Validointi ajetaan kirjoittaessasi, ja Validoi ajaa sen uudelleen. Muotoile molemmat sisentää kaksi tekstiä uudelleen.
  4. Lue tulos: vihreä rivi, kun dokumentti on kelvollinen, muuten virhetaulukko.

Validaattorin virheilmoitukset ovat englanniksi. Muu käyttöliittymä on suomeksi, mutta itse sääntöjen rikkomista kuvaavat viestit tulevat kirjastolta englanninkielisinä.

Virhetaulukon lukeminen

Jokainen rivi on yksi epäonnistunut sääntö:

  • Instanssipolku on JSON Pointer arvoon, joka epäonnistui. /roles/1 on roles-taulukon toinen alkio ja (juuri) on koko dokumentti.
  • Avainsana on skeeman sääntö, joka epäonnistui: type, required, minimum, pattern, format, additionalProperties ja niin edelleen.
  • Viesti selittää epäonnistumisen, esimerkiksi 0 is less than 1.
  • Skeeman polku osoittaa avainsanaan skeeman sisällä, kuten /properties/id/minimum, jotta löydät säännön nopeasti.

Validointi ei pysähdy ensimmäiseen ongelmaan: kaikki virheet luetellaan. Kun olion ominaisuus epäonnistuu, validaattori raportoi yhteenvedon (”Property “id” does not match schema”) ja sen perään tarkan syyn. Näytä vain tarkimmat virheet piilottaa nämä yhteenvedot. Poista valinta nähdäksesi koko ketjun. Virheet anyOf- ja oneOf-ehtojen alla säilytetään aina yhdessä kunkin haaran tarkkojen virheiden kanssa, koska ne ovat mielekkäitä vain yhdessä.

Mitä tuetaan

  • Versiot: 4, 6 (validoidaan draft 7 -säännöillä), 7, 2019-09 ja 2020-12, mukaan lukien $defs/definitions, paikallinen $ref, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties ja unevaluatedItems.
  • Formaatit: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer ja relative-json-pointer tarkistetaan. Tuntemattomat formaatit ohitetaan, kuten määritys sallii.
  • Viittaukset: $ref voi osoittaa mihin tahansa skeeman sisällä, myös sen itse määrittelemään $id-arvoon. Etäskeemoja ei koskaan ladata: viittaus toiseen URL-osoitteeseen raportoidaan ratkaisemattomana.

Tämä työkalu validoi dokumentteja skeemaasi vasten. Se ei tarkista, että itse skeema noudattaa metaskeemaa, mutta se varoittaa tuntemattomista type-nimistä, kuten "strin" tai "int", jotka ovat yleinen kirjoitusvirhe, jonka validaattorit muuten ohittavat hiljaa.

Esimerkit

  • Käyttäjäprofiili (2020-12): required, merkkijonojen pituudet, format: email, enum items-kohdan sisällä, uniqueItems ja additionalProperties: false.
  • Tuoteluettelo $ref-viittauksella (draft-07): taulukko, jonka alkiot viittaavat kohtaan #/definitions/product, SKU:n pattern ja exclusiveMinimum-hinta.
  • Asetukset if/then-ehdolla (2019-09): varmenne vaaditaan vain HTTPS-tilassa, oneOf sähköpostin ja URI:n välillä sekä lukuarvojen rajat.

Jokaiseen esimerkkiin kuuluu dokumentti, jossa on tahallisia virheitä, jotta näet, miltä virheet näyttävät.

Usein kysytyt kysymykset

Lähetetäänkö tietoni palvelimelle?

Ei. Skeema ja dokumentti validoidaan selaimessasi, eikä mitään lähetetä palvelimelle.

Miksi skeemani $ref on ”ratkaisematon”?

Validaattori tuntee vain liittämäsi skeeman. $ref-viittausta toiseen tiedostoon tai URL-osoitteeseen ei voi seurata. Kopioi viitatut määritykset kohtaan $defs ja osoita sen sijaan kohtaan #/$defs/….

Mitä versiota minun pitäisi käyttää?

Käytä sitä, jota projektisi tavoittelee, ja ilmoita se $schema-arvolla. Uusille skeemoille 2020-12 on nykyinen versio, ja myös OpenAPI 3.1 käyttää sitä.

Miksi integer hylkää arvon 2.0?

Se ei hylkää: JSON Schema käsittelee arvon 2.0 kokonaislukuna, koska sen arvo on kokonainen. Arvo 2.5 ei läpäise ehtoa "type": "integer".

Toimiiko se ilman verkkoyhteyttä?

Kyllä. Kun sivu on latautunut ja olet ajanut ensimmäisen validoinnin (joka lataa validaattorin), yhteyttä ei tarvita.