Úvod do schémy JSON v Jave

1. Prehľad

Schéma JSON je deklaratívny jazyk pre validáciu formátu a štruktúry a Objekt JSON. Umožňuje nám určiť počet špeciálnych primitívov, aby sme presne opísali, čo je platné Objekt JSON bude vyzerať ako.

The Schéma JSON špecifikácia je rozdelená do troch častí:

  • Jadro schémy JSON: V špecifikácii schémy JSON je definovaná terminológia schémy.
  • Validácia schémy JSON: Špecifikácia validácie schémy JSON je dokument, ktorý definuje platné spôsoby definovania obmedzení overovania. Tento dokument tiež definuje množinu kľúčových slov, ktoré možno použiť na určenie validácií pre JSON API. V nasledujúcich príkladoch budeme používať niektoré z týchto kľúčových slov.
  • Hyper-schéma JSON: Toto je ďalšie rozšírenie špecifikácie schémy JSON, v ktorom sú definované hypertextový odkaz a kľúčové slová spojené s hypermediáliou.

2. Definovanie schémy JSON

Teraz, keď sme definovali, čo a Schéma JSON sa používa na, vytvorme a Objekt JSON a prisl Schéma JSON opisujúc to.

Nasleduje jednoduchý text Objekt JSON ktorý predstavuje katalóg výrobkov:

{"id": 1, "name": "tienidlo", "cena": 0}

Mohli by sme to definovať Schéma JSON nasledovne:

{"$ schema": "//json-schema.org/draft-04/schema#", "title": "Product", "description": "Produkt z katalógu", "type": "objekt" , "properties": {"id": {"description": "Jedinečný identifikátor produktu", "type": "integer"}, "name": {"description": "Názov produktu", " type ":" string "}," price ": {" type ":" number "," minimum ": 0," exclusiveMinimum ": true}}," required ": [" id "," name "," price " "]}

Ako vidíme a Schéma JSON je a Dokument JSONa tento dokument MUSÍ byť predmetom. Členovia objektu (alebo vlastnosti) definované Schéma JSON sa volajú Kľúčové slová.

Vysvetlíme si kľúčové slová, ktoré sme použili v našej vzorke:

  • The $ schéma kľúčové slovo uvádza, že táto schéma je napísaná podľa špecifikácie návrhu v4.
  • The titul a popis kľúčové slová sú iba popisné v tom zmysle, že nepridávajú obmedzenia k overovaným údajom. Zámer schémy je uvedený v týchto dvoch kľúčových slovách: popisuje produkt.
  • The typu kľúčové slovo definuje prvé obmedzenie na našom JSON údaje: to musí byť a Objekt JSON.

Schéma JSON MÔŽE obsahovať aj vlastnosti, ktoré nie sú kľúčovými slovami schémy. V našom prípade id, názov, cenabudú členmi (alebo vlastnosťami) Objekt JSON.

Pre každú vlastnosť môžeme definovať typu. Definovali sme id a názov ako povrázoka cena ako číslo. V Schéma JSON počet môže mať minimum. Toto minimum je predvolene inkluzívne, takže ho musíme uviesť exkluzívneMinimum.

Nakoniec Schéma hovorí to id, názova cenapožadovaný.

3. Validácia pomocou schémy JSON

S našim Schéma JSON dať na miesto môžeme potvrdiť náš Objekt JSON.

Na splnenie tejto úlohy existuje veľa knižníc. Pre náš príklad sme vybrali knižnicu Java json-schema.

Najskôr je potrebné pridať do našej závislosti nasledujúcu závislosť pom.xml:

 org.everit.json org.everit.json.schema 1.3.0 

Na záver môžeme napísať niekoľko jednoduchých testovacích prípadov, ktoré overia náš Objekt JSON:

@ Test public void givenInvalidInput_whenValidating_thenInvalid () hodí ValidationException {JSONObject jsonSchema = new JSONObject (new JSONTokener (JSONSchemaTest.class.getResourceAsStream ("/ schema.json")))); JSONObject jsonSubject = nový JSONObject (nový JSONTokener (JSONSchemaTest.class.getResourceAsStream ("/ product_invalid.json"))); Schéma schéma = SchemaLoader.load (jsonSchema); schema.validate (jsonSubject); }

V tomto prípade vyhodený ValidationException ukáže na #/cena. Ak sa pozriete na konzolu, vytlačí sa tento výstup:

# / cena: 0,0 nie je vyššia ako 0 

Druhý test vyzerá takto:

@Test public void givenValidInput_whenValidating_thenValid () hodí ValidationException {JSONObject jsonSchema = nový JSONObject (nový JSONTokener (JSONSchemaTest.class.getResourceAsStream ("/ schema.json")))); JSONObject jsonSubject = nový JSONObject (nový JSONTokener (JSONSchemaTest.class.getResourceAsStream ("/ product_valid.json"))); Schéma schéma = SchemaLoader.load (jsonSchema); schema.validate (jsonSubject); }

Keďže používame platný Objekt JSON, nebude vyhodená žiadna chyba overenia.

4. Záver

V tomto článku sme definovali, čo je schéma JSON a ktoré sú relevantné kľúčové slová, ktoré nám pomáhajú definovať našu schému.

Spojka a Schéma JSON so zodpovedajúcimi Objekt JSON reprezentáciu môžeme vykonať nejakú validačnú úlohu.

Jednoduchý testovací prípad tohto článku nájdete v projekte GitHub.


$config[zx-auto] not found$config[zx-overlay] not found