A JSON Pointer áttekintése

1. Áttekintés

Ebben az oktatóanyagban megmutatjuk, hogyan lehet a JSON Pointer használatával navigálni és információkat lekérni a JSON adatokból.

Megmutatjuk azt is, hogy miként hajtható végre olyan műveletek, mint például új adatok beszúrása vagy a meglévő kulcsértékek frissítése.

2. Függőség beállítása

Először hozzá kell adnunk néhány függőséget a sajátunkhoz pom.xml:

 org.glassfish javax.json 1.1.2 

3. JSON mutató

A JSON („JavaScript Object Notation”) egy könnyű formátum az adatok cseréjéhez a rendszerek között, eredetileg Douglas Crockford határozta meg.

Bár használja JavaScript szintaxis, nyelvtől független, mivel az eredmény sima szöveg.

A JSON Pointer (RFC 6901) a JSON Processing 1.1 API (JSR 374) egyik szolgáltatása. Meghatározza a Húr amelyek felhasználhatók egy JSON-dokumentum értékeinek eléréséhez. Összekapcsolható azzal, hogy az XPath mit csinál egy XML dokumentumért.

A JSON Pointer használatával adatokat lehívhatunk és módosíthatunk egy JSON fájlból.

4. Hozzáférés az adatokhoz

Látunk néhány példát arra, hogyan lehet műveleteket végrehajtani egy úgynevezett osztály megvalósításával JsonPointerCrud.

Tegyük fel, hogy van egy JSON fájlunk könyvek.json tartalommal:

{"könyvtár": "Saját könyvtár", "könyvek": [{"cím": "1. cím", "szerző": "Jane Doe"}, {"cím": "2. cím", "szerző": "Gipsz Jakab" } ] }

Ahhoz, hogy hozzáférjünk az adott fájl adataihoz, el kell olvasnunk és elemeznünk kell a JsonStructure. Segítségével elérhetjük Json.createReader () módszer, amely elfogad egy InputStream vagy a FileReader.

Így tehetjük meg:

JsonReader olvasó = Json.createReader (új FileReader ("books.json")); JsonStructure jsonStructure = olvasó.olvasott (); olvasó.zárja ();

A tartalmat a JsonStructure tárgy. Ezt az objektumot fogjuk használni a következő műveletek végrehajtásához.

4.1. Adatok lekérése a fájlból

Egyetlen érték beolvasásához létrehozunk egy JsonPointer, tájékoztatva, hogy melyik címkéből szeretnénk megszerezni az értéket:

JsonPointer jsonPointer = Json.createPointer ("/ könyvtár"); JsonString jsonString = (JsonString) jsonPointer.getValue (jsonStructure); System.out.println (jsonString.getString ());

Vegye figyelembe, hogy ennek első szereplője Húr egy '/' - ez egy szintaktikai követelmény.

Ennek a részletnek az eredménye:

Saját könyvtár

Az érték lekéréséhez a listából meg kell adnunk annak indexét (ahol az első index 0):

JsonPointer jsonPointer = Json.createPointer ("/ books / 1"); JsonObject jsonObject = (JsonObject) jsonPointer.getValue (jsonStructure); System.out.println (jsonObject.toString ());

Ez eredményezi:

"title": "2. cím", "author": "John Doe"

4.2. Ellenőrizze, hogy van-e kulcs a fájlban

A módszer révén tartalmazzaValue, ellenőrizhetjük, hogy a mutató létrehozásához használt érték szerepel-e a JSON fájlban:

JsonPointer jsonPointer = Json.createPointer ("/ könyvtár"); logikai talált = jsonPointer.containsValue (jsonStructure); System.out.println (talált); 

Ennek a részletnek az eredménye:

igaz

4.3. Új kulcsérték beszúrása

Ha új értéket kell adnunk a JSON-nak, a createValue az, aki kezeli. A módszer, a metódus createValue túlterhelt elfogadni Húr, int, hosszú, kettős, BigDecimal és BigInteger:

JsonPointer jsonPointer = Json.createPointer ("/ összesen"); JsonNumber jsonNumber = Json.createValue (2); jsonStructure = jsonPointer.add (jsonStructure, jsonNumber); System.out.println (jsonStructure);

Ismét kimenetünk:

{"könyvtár": "Saját könyvtár", "összesen": 2, "könyvek": [{"cím": "1. cím", "szerző": "Jane Doe"}, {"cím": "2. cím "," author ":" John Doe "}]}

4.4. Kulcsérték frissítése

Egy érték frissítéséhez először létre kell hoznunk az új értéket. Az érték létrehozása után a cserélje ki módszer a kulcsparaméterrel létrehozott mutatóból:

JsonPointer jsonPointer = Json.createPointer ("/ összesen"); JsonNumber jsonNumberNewValue = Json.createValue (5); jsonStructure = jsonPointer.replace (jsonStructure, jsonNumberNewValue); System.out.println (jsonStructure);

Kimenet:

{"könyvtár": "Saját könyvtár", "összesen": 5, "könyvek": [{"cím": "1. cím", "szerző": "Jane Doe"}, {"cím": "2. cím "," author ":" John Doe "}]}

4.5. Távolítson el egy kulcsot

A kulcs eltávolításához először létrehozunk egy mutatót a kulcsra. Ezután az eltávolítási módszert alkalmazzuk:

JsonPointer jsonPointer = Json.createPointer ("/ könyvtár"); jsonPointer.getValue (jsonStructure); jsonStructure = jsonPointer.remove (jsonStructure); System.out.println (jsonStructure);

Eredmény:

{"összesen": 5, "könyvek": [{"cím": "1. cím", "szerző": "Jane Doe"}, {"cím": "2. cím", "szerző": "John Doe" }]}

4.6. A fájl teljes tartalmának megjelenítése

Ha a mutató üresen jön létre Húr, a teljes tartalom lekérésre kerül:

JsonPointer jsonPointer = Json.createPointer (""); JsonObject jsonObject = (JsonObject) jsonPointer.getValue (jsonStructure); System.out.println (jsonObject.toString ());

Ez a kódminta a jsonStructure.

5. Következtetés

Ebben a rövid cikkben kitértünk arra, hogyan lehet együttműködni a JSON Pointerrel a JSON-adatok különféle műveleteinek végrehajtásakor.

És mint általában, az oktatóanyaghoz kapcsolódó kódnak vége a GitHubon.