Utilia

JSON Schema validátor

Ellenőrizz egy JSON-dokumentumot JSON Schema alapján a böngésződben. Minden hibát kilistáz a példány útvonalával, kulcsszavával és a séma útvonalával.

Hogyan ellenőrizz JSON-t sémával szemben

  1. Illeszd be a sémát a JSON Schema mezőbe, az adataidat a JSON-dokumentum mezőbe, vagy válassz egy kész esetet a Példa közül.
  2. Hagyd a Draft beállítást Automatikus ($schema) értéken, hogy a séma $schema mezője által megnevezett verziót használja, vagy erőltesd a 4-es, a 7-es, a 2019-09-es vagy a 2020-12-es draftot.
  3. Az ellenőrzés gépelés közben fut; az Ellenőrzés gomb újra lefuttatja. A Mindkettő formázása újrabehúzza a két szöveget.
  4. Olvasd le az eredményt: zöld sor, ha a dokumentum érvényes, különben hibatáblázat.

A hibatáblázat olvasása

Minden sor egy sikertelen szabály:

  • A Példány útvonala egy JSON Pointer a sikertelen értékre. A /roles/1 a roles második eleme; a (gyökér) a teljes dokumentum.
  • A Kulcsszó a sikertelen sémaszabály: type, required, minimum, pattern, format, additionalProperties és így tovább.
  • Az Üzenet megmagyarázza a hibát, például 0 is less than 1.
  • A Séma útvonala a séma kulcsszavára mutat, például /properties/id/minimum, így gyorsan megtalálhatod a szabályt.

Az ellenőrzés nem áll meg az első problémánál: minden hibát listáz. Ha egy objektumtulajdonság hibázik, a validátor összefoglalót ad („Property “id” does not match schema”), majd a pontos okot. A Csak a legspecifikusabb hibák mutatása elrejti ezeket az összefoglalókat; vedd ki a jelölést, hogy a teljes láncot lásd. Az anyOf és oneOf alatti hibákat az eszköz mindig az egyes ágak specifikus hibáival együtt tartja meg, mert csak együtt van értelmük.

A validátor hibaüzenetei angolul jelennek meg.

Mit támogat

  • Draftok: 4, 6 (a 7-es draft szabályaival ellenőrizve), 7, 2019-09 és 2020-12, beleértve a $defs/definitions, a helyi $ref, az if/then/else, a dependentRequired, a dependentSchemas, a prefixItems, az unevaluatedProperties és az unevaluatedItems kulcsszavakat.
  • Formátumok: a date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer és relative-json-pointer formátumokat ellenőrzi. Az ismeretlen formátumokat figyelmen kívül hagyja, ahogy a specifikáció megengedi.
  • Hivatkozások: a $ref bárhová mutathat a sémán belül, az általa deklarált $id értékekre is. Távoli sémákat soha nem tölt le; egy másik URL-re mutató hivatkozást feloldatlanként jelez.

Ez az eszköz a dokumentumokat a te sémád alapján ellenőrzi. Nem vizsgálja, hogy maga a séma megfelel-e a metasémának, de figyelmeztet az ismeretlen type nevekre, például a "strin" vagy "int" értékre, amely gyakori elgépelés, és amelyet a validátorok egyébként csendben figyelmen kívül hagynak.

A példák

  • Felhasználói profil (2020-12): required, karakterlánc-hosszak, format: email, enum az items belsejében, uniqueItems és additionalProperties: false.
  • Terméklista $ref-fel (draft-07): egy tömb, amelynek elemei a #/definitions/product helyre hivatkoznak, az SKU-hoz pattern-nel és exclusiveMinimum árral.
  • Konfiguráció if/then-nel (2019-09): egy tanúsítvány, amely csak HTTPS módban kötelező, egy oneOf az e-mail és az URI között, valamint numerikus korlátok.

Minden példához tartozik egy szándékos hibákat tartalmazó dokumentum, hogy lásd, hogyan néznek ki a hibák.

Gyakori kérdések

Feltöltődnek az adataim?

Nem. A sémát és a dokumentumot a böngésződben ellenőrizzük; semmi nem kerül elküldésre szervernek.

Miért „feloldatlan” a sémám $ref hivatkozása?

A validátor csak a beillesztett sémát ismeri. Egy másik fájlra vagy URL-re mutató $ref nem követhető; másold a hivatkozott definíciókat a $defs részbe, és a #/$defs/… helyre mutass.

Melyik draftot használjam?

Azt, amelyet a projekted céloz, és deklaráld a $schema mezővel. Új sémákhoz a 2020-12 az aktuális verzió; az OpenAPI 3.1 is ezt használja.

Miért utasítja el az integer a 2.0 értéket?

Nem utasítja el: a JSON Schema a 2.0 értéket egész számnak tekinti, mert az értéke egész. A 2.5 megbukik a "type": "integer" szabályon.

Működik offline?

Igen. Miután az oldal betöltődött, és lefuttattál egy első ellenőrzést (amely betölti a validátort), nincs szükség kapcsolatra.