Utilia

Vlerësuesi i JSON Schema

Vlerëso një dokument JSON kundrejt një JSON Schema në shfletuesin tënd. Çdo gabim listohet me shtegun e instancës, fjalën kyçe dhe shtegun e skemës.

Si ta vlerësosh JSON-in kundrejt një skeme

  1. Ngjit skemën te JSON Schema dhe të dhënat te Dokumenti JSON, ose zgjidh një rast të gatshëm nga Shembull.
  2. Lëre Draftin te Automatik ($schema) për të përdorur versionin e emërtuar nga $schema e skemës, ose detyro draftin 4, 7, 2019-09 ose 2020-12.
  3. Vlerësimi ekzekutohet ndërsa shkruan; Vlerëso e ekzekuton përsëri. Formato të dyja i riformaton të dy tekstet me shtyrje.
  4. Lexo rezultatin: një rresht i gjelbër kur dokumenti është i vlefshëm, përndryshe një tabelë gabimesh.

Leximi i tabelës së gabimeve

Çdo rresht është një rregull që dështoi:

  • Shtegu i instancës është një JSON Pointer drejt vlerës që dështoi. /roles/1 është elementi i dytë i roles; (rrënja) është i gjithë dokumenti.
  • Fjala kyçe është rregulli i skemës që dështoi: type, required, minimum, pattern, format, additionalProperties e kështu me radhë.
  • Mesazhi shpjegon dështimin, për shembull 0 is less than 1. Mesazhet e gabimit nga vlerësuesi janë në anglisht.
  • Shtegu i skemës drejton te fjala kyçe brenda skemës, si /properties/id/minimum, që ta gjesh shpejt rregullin.

Vlerësimi nuk ndalon te problemi i parë: listohen të gjitha gabimet. Kur dështon një veti objekti, vlerësuesi raporton një përmbledhje (“Property “id” does not match schema”) të ndjekur nga arsyeja e saktë. Shfaq vetëm gabimet më specifike i fsheh ato përmbledhje; hiq shenjën për të parë zinxhirin e plotë. Gabimet nën anyOf dhe oneOf mbahen gjithmonë së bashku me gabimet specifike të secilës degë, sepse kanë kuptim vetëm bashkë.

Çfarë mbështetet

  • Draftet: 4, 6 (vlerësuar me rregullat e draftit 7), 7, 2019-09 dhe 2020-12, përfshirë $defs/definitions, $ref lokal, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties dhe unevaluatedItems.
  • Formatet: kontrollohen date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer dhe relative-json-pointer. Formatet e panjohura injorohen, siç e lejon specifikimi.
  • Referencat: $ref mund të drejtojë kudo brenda skemës, përfshirë një $id që ajo deklaron. Skemat e largëta nuk shkarkohen kurrë; një referencë te një URL tjetër raportohet si e pazgjidhur.

Ky mjet vlerëson dokumentet kundrejt skemës sate. Nuk kontrollon nëse vetë skema ndjek meta-skemën, por paralajmëron për emra tipesh të panjohur si "strin" ose "int", një gabim shtypi i zakonshëm që vlerësuesit përndryshe e injorojnë në heshtje.

Shembujt

  • Profili i përdoruesit (2020-12): required, gjatësi vargjesh, format: email, një enum brenda items, uniqueItems dhe additionalProperties: false.
  • Lista e produkteve me $ref (draft-07): një varg elementet e të cilit referojnë #/definitions/product, me një pattern për SKU dhe një çmim exclusiveMinimum.
  • Konfigurim me if/then (2019-09): një certifikatë e kërkuar vetëm në modalitetin HTTPS, një oneOf mes email-it dhe URI-t, dhe kufij numerikë.

Çdo shembull vjen me një dokument që përmban gabime të qëllimshme, që të shohësh si duken gabimet.

Pyetje të shpeshta

A ngarkohen të dhënat e mia?

Jo. Skema dhe dokumenti vlerësohen në shfletuesin tënd; asgjë nuk dërgohet te një server.

Pse `$ref` i skemës sime është “i pazgjidhur”?

Vlerësuesi njeh vetëm skemën që ke ngjitur. Një $ref drejt një skedari ose URL-je tjetër nuk mund të ndiqet; kopjo përkufizimet e referuara te $defs dhe drejto te #/$defs/… në vend të tyre.

Cilin draft duhet të përdor?

Atë që synon projekti yt, dhe deklaroje me $schema. Për skema të reja, 2020-12 është versioni aktual; OpenAPI 3.1 e përdor gjithashtu.

Pse integer e refuzon 2.0?

Nuk e refuzon: JSON Schema e trajton 2.0 si numër të plotë sepse vlera e tij është e plotë. 2.5 dështon te "type": "integer".

A funksionon pa internet?

Po. Pasi faqja të jetë ngarkuar dhe të kesh bërë një vlerësim të parë (që ngarkon vlerësuesin), nuk nevojitet lidhje.