Ú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 cena sú pož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.