Teknobench

Validatur tal-JSON Schema

Ivvalida dokument JSON kontra JSON Schema fil-brawżer tiegħek. Kull żball jiġi elenkat bil-path tal-istanza, il-keyword u l-path tal-iskema tiegħu.

Kif tivvalida JSON kontra skema

  1. Waħħal l-iskema tiegħek f’JSON Schema u d-data tiegħek f’Dokument JSON, jew agħżel każ lest minn Eżempju.
  2. Ħalli Draft fuq Awtomatiku ($schema) biex tuża l-verżjoni msemmija mill-$schema tal-iskema, jew ġġiegħel draft 4, 7, 2019-09 jew 2020-12.
  3. Il-validazzjoni taħdem waqt li tikteb; Ivvalida iħaddimha mill-ġdid. Ifformatja t-tnejn jerġa’ jindenta ż-żewġ testi.
  4. Aqra r-riżultat: linja ħadra meta d-dokument huwa validu, inkella tabella ta’ żbalji.

Kif taqra t-tabella tal-iżbalji

Kull ringiela hija regola waħda li falliet:

  • Path tal-istanza huwa JSON Pointer lejn il-valur li falla. /roles/1 huwa t-tieni oġġett ta’ roles; (għerq) huwa d-dokument kollu.
  • Keyword hija r-regola tal-iskema li falliet: type, required, minimum, pattern, format, additionalProperties u l-bqija.
  • Messaġġ jispjega l-falliment, pereżempju 0 is less than 1.
  • Path tal-iskema jindika l-keyword ġewwa l-iskema, bħal /properties/id/minimum, biex issib ir-regola malajr.

Il-validazzjoni ma tieqafx fl-ewwel problema: l-iżbalji kollha jiġu elenkati. Meta proprjetà ta’ oġġett tfalli, il-validatur jirrapporta sommarju (“Property “id” does not match schema”) segwit mir-raġuni preċiża. Uri biss l-iżbalji l-aktar speċifiċi jaħbi dawk is-sommarji; neħħi l-marka biex tara l-katina sħiħa. L-iżbalji taħt anyOf u oneOf dejjem jinżammu flimkien mal-iżbalji speċifiċi ta’ kull fergħa, għax ma jagħmlux sens ħlief flimkien.

X’huwa appoġġjat

  • Drafts: 4, 6 (ivvalidat bir-regoli tad-draft 7), 7, 2019-09 u 2020-12, inklużi $defs/definitions, $ref lokali, if/then/else, dependentRequired, dependentSchemas, prefixItems, unevaluatedProperties u unevaluatedItems.
  • Formats: date, time, date-time, duration, email, hostname, ipv4, ipv6, uri, uri-reference, uri-template, uuid, regex, json-pointer u relative-json-pointer jiġu ċċekkjati. Formats mhux magħrufa jiġu injorati, kif tippermetti l-ispeċifikazzjoni.
  • Referenzi: $ref jista’ jindika kullimkien ġewwa l-iskema, inkluż lejn $id li hi tiddikjara. Skemi mill-bogħod qatt ma jitniżżlu; referenza għal URL ieħor tiġi rrapportata bħala mhux solvuta.

Din l-għodda tivvalida dokumenti kontra l-iskema tiegħek. Ma tiċċekkjax li l-iskema nnifisha issegwi l-meta-skema, imma twissik dwar ismijiet ta’ type mhux magħrufa bħal "strin" jew "int", żball tipiku li l-validaturi inkella jinjoraw bil-kwiet.

L-eżempji

  • Profil tal-utent (2020-12): required, tulijiet ta’ strings, format: email, enum ġewwa items, uniqueItems u additionalProperties: false.
  • Lista ta’ prodotti b’$ref (draft-07): array li l-oġġetti tiegħu jirreferu għal #/definitions/product, b’pattern għall-SKU u prezz b’exclusiveMinimum.
  • Konfigurazzjoni b’if/then (2019-09): ċertifikat meħtieġ biss fil-modalità HTTPS, oneOf bejn email u URI, u limiti numeriċi.

Kull eżempju jiġi b’dokument li fih żbalji deliberati, biex tkun tista’ tara kif jidhru l-iżbalji.

Il-messaġġi tal-iżbalji mill-validatur huma bl-Ingliż.

Mistoqsijiet frekwenti

Id-data tiegħi tittella’?

Le. L-iskema u d-dokument jiġu vvalidati fil-brawżer tiegħek; xejn ma jintbagħat lil server.

Għaliex il-$ref tal-iskema tiegħi huwa “mhux solvut”?

Il-validatur jaf biss l-iskema li waħħalt. $ref lejn fajl jew URL ieħor ma jistax jiġi segwit; ikkopja d-definizzjonijiet referenzjati f’$defs u indika #/$defs/… minflok.

Liema draft għandi nuża?

Uża dak li jimmira lejh il-proġett tiegħek, u iddikjarah b’$schema. Għal skemi ġodda, 2020-12 hija l-verżjoni kurrenti; l-OpenAPI 3.1 juża wkoll din.

Għaliex integer jirrifjuta 2.0?

Ma jirrifjutax: JSON Schema jittratta 2.0 bħala integer għax il-valur tiegħu huwa sħiħ. 2.5 jfalli "type": "integer".

Jaħdem offline?

Iva. Malli titella’ l-paġna u tħaddem l-ewwel validazzjoni (li tgħabbi l-validatur), ma tinħtieġ ebda konnessjoni.