Oversigt over JSON Pointer

1. Oversigt

I denne vejledning vi viser, hvordan du bruger JSON Pointer til at navigere og hente oplysninger fra JSON-data.

Vi viser også, hvordan du udfører operationer såsom indsættelse af nye data eller opdatering af eksisterende nøgleværdier.

2. Afhængighedsopsætning

Først skal vi tilføje nogle afhængigheder til vores pom.xml:

 org.glassfish javax.json 1.1.2 

3. JSON-markør

JSON (“JavaScript Object Notation”) er et letvægtformat til udveksling af data mellem systemer, oprindeligt specificeret af Douglas Crockford.

Selvom det bruger JavaScript syntaks, det er sproguafhængigt, da det resulterende er almindelig tekst.

JSON Pointer (RFC 6901) er en funktion fra JSON Processing 1.1 API (JSR 374). Det definerer en Snor der kan bruges til at få adgang til værdier i et JSON-dokument. Det kan relateres til, hvad XPath gør for et XML-dokument.

Ved hjælp af JSON Pointer kan vi hente data fra og ændre en JSON-fil.

4. Adgang til data

Vi ser nogle eksempler på, hvordan man udfører operationer ved at implementere en kaldet klasse JsonPointerCrud.

Lad os antage, at vi har en JSON-fil, der hedder books.json med indholdet:

{"library": "My Personal Library", "books": [{"title": "Title 1", "author": "Jane Doe"}, {"title": "Title 2", "author": "John Doe"}]}

For at få adgang til dataene fra den pågældende fil skal vi læse dem og analysere dem til a JsonStruktur. Vi kan opnå det ved hjælp af Json.createReader () metode, der accepterer en InputStream eller a FileReader.

Sådan kan vi gøre det:

JsonReader læser = Json.createReader (ny FileReader ("books.json")); JsonStructure jsonStructure = reader.read (); reader.close ();

Indholdet gemmes på en JsonStruktur objekt. Dette er det objekt, vi bruger til at udføre næste operationer.

4.1. Hent data fra filen

For at hente en enkelt værdi opretter vi en JsonPointer, der informerer hvilket mærke vi ønsker at få værdien fra:

JsonPointer jsonPointer = Json.createPointer ("/ bibliotek"); JsonString jsonString = (JsonString) jsonPointer.getValue (jsonStructure); System.out.println (jsonString.getString ());

Noter det den første karakter af dette Snor er en '/' - dette er et syntaktisk krav.

Resultatet af dette uddrag er:

Mit personlige bibliotek

For at hente en værdi fra en liste skal vi angive dens indeks (hvor det første indeks er 0):

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

Dette output:

"title": "Titel 2", "author": "John Doe"

4.2. Kontroller, om der er en nøgle i filen

Gennem metoden indeholder værdi, kan vi kontrollere, om den værdi, der bruges til at oprette markøren, er til stede i JSON-filen:

JsonPointer jsonPointer = Json.createPointer ("/ bibliotek"); boolsk fundet = jsonPointer.containsValue (jsonStructure); System.out.println (fundet); 

Resultatet for dette uddrag er:

rigtigt

4.3. Indsæt ny nøgleværdi

Hvis vi har brug for at tilføje en ny værdi til JSON, bliver createValue er den der skal håndtere det. Metoden createValue er overbelastet til at acceptere Snor, int, lang, dobbelt, BigDecimal og BigInteger:

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

Igen er vores output:

{"library": "Mit personlige bibliotek", "total": 2, "books": [{"title": "Titel 1", "author": "Jane Doe"}, {"title": "Titel 2 "," author ":" John Doe "}]}

4.4. Opdater en nøgleværdi

For at opdatere en værdi skal vi først oprette den nye værdi. Når værdien er oprettet, bruger vi erstatte metode fra markøren oprettet ved hjælp af nøgleparameteren:

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

Udsendelse:

{"library": "My Personal Library", "total": 5, "books": [{"title": "Titel 1", "author": "Jane Doe"}, {"title": "Titel 2 "," author ":" John Doe "}]}

4.5. Fjern en nøgle

For at fjerne en nøgle opretter vi først en markør til nøglen. Vi bruger derefter fjernelsesmetoden:

JsonPointer jsonPointer = Json.createPointer ("/ bibliotek"); jsonPointer.getValue (jsonStructure); jsonStructure = jsonPointer.remove (jsonStructure); System.out.println (jsonStructure);

Resulterende i:

{"total": 5, "books": [{"title": "Title 1", "author": "Jane Doe"}, {"title": "Title 2", "author": "John Doe" }]}

4.6. Vis filens fulde indhold

Hvis markøren oprettes med en tom Snor, hele indholdet hentes:

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

Denne kodeeksempel udsender hele indholdet af jsonStruktur.

5. Konklusion

I denne hurtige artikel har vi dækket, hvordan man arbejder med JSON Pointer for at udføre forskellige operationer på JSON-data.

Og som sædvanlig er koden relateret til denne vejledning forbi på GitHub.


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