Oversikt over JSON Pointer

1. Oversikt

I denne veiledningen, vi viser hvordan du bruker JSON Pointer til å navigere og hente informasjon fra JSON-data.

Vi viser også hvordan du utfører operasjoner som å sette inn nye data eller oppdatere eksisterende nøkkelverdier.

2. Avhengighetsoppsett

Først må vi legge til noen avhengigheter til vår pom.xml:

 org.glassfish javax.json 1.1.2 

3. JSON-pekeren

JSON (“JavaScript Object Notation”) er et lett format for utveksling av data mellom systemer, opprinnelig spesifisert av Douglas Crockford.

Selv om det bruker JavaScript syntaks, det er språkuavhengig, siden resultatet er ren tekst.

JSON Pointer (RFC 6901) er en funksjon fra JSON Processing 1.1 API (JSR 374). Den definerer en String som kan brukes til å få tilgang til verdier i et JSON-dokument. Det kan være relatert til hva XPath gjør for et XML-dokument.

Gjennom bruk av JSON Pointer kan vi hente data fra og endre en JSON-fil.

4. Få tilgang til data

Vi får se noen eksempler på hvordan du utfører operasjoner ved å implementere en klasse som heter JsonPointerCrud.

La oss anta at vi har en JSON-fil kalt books.json med innholdet:

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

For å få tilgang til dataene fra den filen, må vi lese dem og analysere dem til a JsonStructure. Vi kan oppnå det ved hjelp av Json.createReader () metode, som godtar en InputStream eller a FileReader.

Slik kan vi gjøre det:

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

Innholdet lagres på en JsonStructure gjenstand. Dette er objektet vi vil bruke til å utføre neste operasjoner.

4.1. Hent data fra filen

For å hente en enkelt verdi lager vi en JsonPointer, informerer hvilken tag vi ønsker å få verdien fra:

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

Noter det den første karakteren av dette String er en '/' - dette er et syntaktisk krav.

Resultatet av denne kodebiten er:

Mitt personlige bibliotek

For å hente en verdi fra en liste, må vi spesifisere indeksen (der den første indeksen er 0):

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

Dette gir utganger:

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

4.2. Sjekk om det er en nøkkel i filen

Gjennom metoden inneholder verdi, kan vi sjekke om verdien som ble brukt til å lage pekeren er til stede i JSON-filen:

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

Resultatet for denne kodebiten er:

ekte

4.3. Sett inn ny nøkkelverdi

Hvis vi trenger å legge til en ny verdi i JSON, vil createValue er den som skal håndtere det. Metoden createValue er overbelastet for å godta String, 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);

Igjen er produksjonen vår:

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

4.4. Oppdater en nøkkelverdi

For å oppdatere en verdi må vi først opprette den nye verdien. Etter at verdien er opprettet, bruker vi erstatte metode fra pekeren opprettet ved hjelp av nøkkelparameteren:

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

Produksjon:

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

4.5. Fjern en nøkkel

For å fjerne en nøkkel oppretter vi først en peker til nøkkelen. Vi bruker deretter fjerningsmetoden:

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

Resulterer i:

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

4.6. Vis hele innholdet i filen

Hvis pekeren er opprettet med en tom String, blir hele innholdet hentet:

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

Denne kodeeksemplet vil sende ut hele innholdet i jsonStruktur.

5. Konklusjon

I denne raske artikkelen har vi dekket hvordan vi kan jobbe med JSON Pointer for å utføre forskjellige operasjoner på JSON-data.

Og som vanlig er koden relatert til denne opplæringen over på GitHub.


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