Bevezetés a Java JSON-sémájába
1. Áttekintés
JSON Schema deklaratív nyelv az a formátumának és szerkezetének érvényesítéséhez JSON Object. Ez lehetővé teszi számunkra, hogy meghatározzuk a speciális primitívek számát, hogy pontosan leírjuk, mi érvényes JSON Object fog kinézni.
A JSON Schema specifikáció három részre oszlik:
- JSON séma mag: A séma terminológiáját a JSON séma alap specifikáció határozza meg.
- JSON-séma érvényesítése: A JSON-séma-érvényesítés specifikáció az a dokumentum, amely meghatározza az érvényesítési korlátozások érvényes módjait. Ez a dokumentum meghatározza azokat a kulcsszavakat is, amelyek felhasználhatók a JSON API érvényesítésének megadására. A következő példákban ezeket a kulcsszavakat használjuk.
- JSON Hyper-Schema: Ez a JSON Schema specifikáció másik kiterjesztése, amelyben a hiperhivatkozással és a hipermédiával kapcsolatos kulcsszavak vannak meghatározva.
2. JSON-séma meghatározása
Most, hogy meghatároztuk, mi a JSON Schema használjuk, hozzunk létre egy JSON Object és a megfelelő JSON Schema leírva.
A következő egyszerű JSON Object termékkatalógust képviselő:
{"id": 1, "name": "Lámpaernyő", "price": 0}
Meghatározhatnánk JSON Schema az alábbiak szerint:
{"$ schema": "//json-schema.org/draft-04/schema#", "title": "Termék", "description": "Termék a katalógusból", "type": "object" , "tulajdonságok": {"id": {"description": "A termék egyedi azonosítója", "type": "integer"}, "name": {"description": "A termék neve", " type ":" string "}," price ": {" type ":" number "," minimum ": 0," exclusiveMinimum ": true}}," required ": [" id "," name "," price "]}
Mint láthatjuk a JSON Schema egy JSON dokumentum, és ennek a dokumentumnak KELL objektumnak lennie. Az objektum tagjai (vagy tulajdonságai) által meghatározott JSON Schema hívják kulcsszavak.
Magyarázzuk el a mintánkban használt kulcsszavakat:
- A $ séma kulcsszó azt állítja, hogy ez a séma a v4 specifikáció tervezete szerint íródott.
- A cím és leírás a kulcsszavak csak leíró jellegűek, mivel nem tesznek korlátokat az érvényesítendő adatokra. A séma szándékát ezzel a két kulcsszóval közöljük: egy terméket ír le.
- A típus kulcsszó meghatározza az első kényszert miénken JSON adatok: azt kell lennie a JSON Object.
Ezenkívül egy JSON séma tartalmazhat olyan tulajdonságokat, amelyek nem séma kulcsszavak. A mi esetünkben id, név, ártagjai (vagy tulajdonságai) lesznek a JSON Object.
Minden tulajdonságra meghatározhatjuk a típus. Meghatároztuk id és név mint húrés ár mint szám. Ban ben JSON Schema egy számnak lehet minimumja. Alapértelmezés szerint ez a minimum magában foglalja, ezért meg kell adnunk exclusiveMinimum.
Végül a Séma azt mondja id, név, és ár vannak kívánt.
3. Érvényesítés JSON-sémával
Velünk JSON Schema bevezetett érvényesíteni tudjuk a mi JSON Object.
Sok könyvtár van ennek a feladatnak a végrehajtására. Példaként a Java json-séma könyvtárat választottuk.
Mindenekelőtt hozzá kell adnunk a következő függőséget a sajátunkhoz pom.xml:
org.everit.json org.everit.json.séma 1.3.0
Végül írhatunk pár egyszerű tesztesetet a mi igazolásunkra JSON objektum:
@Test public void givenInvalidInput_whenValidating_thenInvalid () dobja a ValidationException {JSONObject jsonSchema = új JSONObject (új JSONTokener (JSONSchemaTest.class.getResourceAsStream ("/ schema.json")); JSONObject jsonSubject = új JSONObject (új JSONTokener (JSONSchemaTest.class.getResourceAsStream ("/ product_invalid.json"))); Séma séma = SchemaLoader.load (jsonSchema); schema.validate (jsonSubject); }
Ebben az esetben dobott ValidationException rámutat #/ár. Ha megnézi a konzolt, a következő kimenetet fogja kinyomtatni:
# / price: 0.0 nem magasabb, mint 0
A második teszt a következőképpen néz ki:
@Test public void givenValidInput_whenValidating_thenValid () dobja a ValidationException {JSONObject jsonSchema = új JSONObject (új JSONTokener (JSONSchemaTest.class.getResourceAsStream ("/ schema.json")); JSONObject jsonSubject = új JSONObject (új JSONTokener (JSONSchemaTest.class.getResourceAsStream ("/ product_valid.json"))); Séma séma = SchemaLoader.load (jsonSchema); schema.validate (jsonSubject); }
Mivel érvényes JSON Object, nem dob ellenőrzési hibát.
4. Következtetés
Ebben a cikkben meghatároztuk, hogy mi a JSON-séma, és melyek azok a releváns kulcsszavak, amelyek segítenek a sémánk meghatározásában.
Csatolás a JSON Schema annak megfelelőjével JSON Object ábrázolással valamilyen érvényesítési feladatot elvégezhetünk.
A cikk egyszerű tesztesete megtalálható a GitHub projektben.