Serialisering og deserialisering
En fil kan lagres på disken eller sendes over nettverket ved bare å sende filen som den er, byte byte, fra begynnelsen (som kildekode, bytecode eller binærkode). Det er ikke serialisering. Serialisering er prosessen med å konvertere et objekt til en strøm av byte, for lagring eller overføring, fremdeles som objekt. Dette er ikke det samme som å bare lese byte fra begynnelsen og sende eller lagre. Det motsatte av serialisering er deserialisering. Ikke sopp serialisering, som en prosess, gjøres med primitive gjenstander på egen hånd.
JSON står for JavaScript Object Notation. JSON er et format for serialisering. Et Java -objekt (definert) kan konverteres til en JSON -representasjon (streng) for overføring eller lagring. For gjenbruk blir JSON -representasjonen konvertert tilbake til Java -objektet. GSON er et Java -bibliotek som brukes til konvertering i begge retninger.
For å serialisere, bruk TOJSON () -metoden til GSON -objektet. For å deserialisere, bruk fromjson () -metoden til GSON -objektet. Denne artikkelen forklarer det grunnleggende om serialisering av Java -objekter til JSON -representasjon, med TOJSON () -metoden, og deserialisering av JSON -representasjon (String), til Java -objekt, med Fromjson () -metoden.
Artikkelinnhold
Last ned og konfigurere GSON -biblioteket
GSON -biblioteket kommer som en krukkefil. Et bibliotek som GSON blir referert til som en avhengighet. Det er gratis å laste ned. Resten av denne delen forklarer hva forfatteren gjorde med verten Ubuntu OS -datamaskinen. Leseren kan gjenta eller endre tilnærmingen.
Han opprettet en katalog, kalt avhengigheter, in/home/bruker/å ha:/hjemme/bruker/avhengigheter, der en bruker skal erstattes av brukernavnet.
Han lastet ned bibliotekfilen, GSON-2.8.9.krukke, fra hyperkoblingen:
https: // søk.Maven.org/remotecontent?filepath = com/google/code/gson/gson/2.8.9/GSON-2.8.9.krukke
og lagret det, som det er, i avhengighetskatalogen.
Deretter, ved ledetekst, satte han opp (lagt inn) en klassevariabel, som følger:
Eksporter ClassPath =/Hjem/Bruker/avhengigheterJava -programmet skal ha, som et minimum, følgende:
import com.Google.Gson.Gson;Navnet på kildekodefilen er avklassen.Java. Legg merke til navnet på den importerte pakken, som er i GSON-2.8.9.JAR -fil. Følgende kommandolinje ble brukt til å kompilere programmet til byte -kode:
Javac -ClassPath/Home/Bruker:/Hjem/Bruker/avhengigheter/GSON -2.8.9.Jar theClass.JavaLegg merke til bryteren, -klassestien . Det er to stier her, atskilt med en tykktarm (ingen plass rundt tykktarmen). Den første er banen til hovedfilen, theclass.Java; Og den andre er banen til bibliotekfilen, GSON-2.8.9.krukke.
Den resulterende bytecode kjøres med følgende kommandolinje:
Java -ClassPath/Home/Bruker:/Hjem/Bruker/avhengigheter/GSON -2.8.9.Jar theClassBryteren og de to stiene er fremdeles der, i deres posisjoner, av samme grunner. Bytecode skal kjøre vellykket, alt er likt.
Primitive Java -objekter
Denne delen illustrerer hvilken verdi et primitivt objekt vil ha etter serialisering, som JSON -streng, og hvilken verdi det vil ha etter deserialisering. For å bruke TOJSON () og FRAMJSON () -metodene, må GSON -objektet opprettes med en uttalelse som:
GSON GSON = new Gson ();Der GSON er GSON -objektet som skal brukes med sine metoder: TOJSON () for serialisering, og frajson () for deserialisering.
byte
Tenk på følgende kode innenfor Main () -metoden:
Gsongson = new Gson ();Utgangen er 56. Denne koden serialiserer og deserialiserer. Legg merke til det andre argumentet fra frajson (), som er byte.klasse. Serialisering av et typeobjekt blir en JSON -streng, og deserialisering bør gå tilbake til samme type. Det er grunnen til byte.Klasse er til stede.
int
Tenk på følgende kode innenfor Main () -metoden:
Gsongson = new Gson ();Utgangen er 0. Legg merke til det andre argumentet fra frajson (), som er int.klasse.
dobbelt
Tenk på følgende kode innenfor Main () -metoden:
Gsongson = new Gson ();Utgangen er 7.8. Legg merke til det andre argumentet for frajson (), som er dobbelt.klasse.
røye
Tenk på følgende kode innenfor Main () -metoden:
Gsongson = new Gson ();Utgangen er e. Legg merke til det andre argumentet for frajson (), som er røye.klasse.
boolsk
Tenk på følgende kode innenfor Main () -metoden:
GSON GSON = new Gson ();Utgangen er falsk. Legg merke til det andre argumentet for frajson (), som er boolsk.klasse.
null
Tenk på følgende kode innenfor Main () -metoden:
GSON GSON = new Gson ();Utgangen er null. Legg merke til det andre argumentet for frajson (), som er streng.klasse, for den typen null.
Array
Matrise bokstavelig
Tenk på følgende kode:
GSON GSON = new Gson ();Utgangen er:
1.1 2.2 3.3 4.4Etter å ha opprettet GSON -objektet, opprettes en Java -dobbeltgruppe. Deretter konverteres matrisen til en JSON -streng. Ja, selv om koden er opptatt av en matrise her og ikke en primitiv type, vil TOJSON () -metoden fremdeles brukt, og tilsvarende vil frajson () fortsatt brukes på mottakeren. JSON String -arrayen bokstavelig er:
"[1.1, 2.2, 3.3, 4.4] "Denne brodden er det som er montert i strømmen som overføres eller lagres lokalt. FromeJson () -metoden konverterer JSON -array -strengen bokstavelig til Java -arrayen (bokstavelig) ved mottakende slutt.
Tenk på følgende kode, som begynner med en Java -utvalg av strenger, der hver streng er et element på et lesetabell:
GSON GSON = new Gson ();Utgangen er:
Penn, Excercise Book, Null, Text BookEtter å ha opprettet GSON -objektet, opprettes en Java String -matrise. Deretter konverteres matrisen til en JSON -streng. JSON String -arrayen bokstavelig er:
"[" Pen "," Treningsbok ", Null," Text Book "]"Denne brodden er det som er montert i strømmen som overføres eller lagres lokalt. FromeJson () -metoden konverterer JSON -array -strengen bokstavelig av strenger tilbake til Java -arrayen (bokstavelig) ved mottakeren. Merk at klassetypen (streng []) er nødvendig for konvertering bakover.
Sending av matrise bokstavelig med navn på matrise
Problemet med ovennevnte ordning er at matrisen på destinasjonen sannsynligvis vil få et annet navn for den rekonstruerte Java -koden. Array -navnet kan sendes, som et enkelt ord, før arrayen av interesse for å løse dette problemet. Java -programmet vil motta to matriser til mottakende slutt og tolke dem på riktig måte.
Gjenstand
Objektinnhold
Tenk på følgende kode:
import com.Google.Gson.Gson;Det begynner med import av GSON -pakken, og så er det beskrivelsen av en klasse, kalt ACLASS. Klassen har fire felt (egenskaper) og en metode. En av verdiene på feltene er null, og en annen har ingen verdi. En passende kode i hovedfunksjonen () for denne klassen er:
Gsongson = new Gson ();Utgangen består av to linjer, som er:
10, null, null, treEtter å ha opprettet GSON -objektet, et annet objekt, blir OBJ instantiert fra klassen, ACLASS. Deretter konverteres matrisen til en JSON -streng. Ja, selv om koden er opptatt av et instantiert objekt her og ikke en primitiv type, vil TOJSON () -metoden fremdeles brukt, og tilsvarende vil frajson () fortsatt brukes på mottakeren. JSON Instantiated (Class) Object Content String er slik:
"num": 10, "str1": null, "str2: null," str3 ":" tre "," mthd ":" int mthd (int it) return it; "Legg merke til avgrensende seler i stedet for firkantede parenteser for å skille dem fra JSON. Den består av nøkkel/verdipar. Nøkkelen er atskilt fra verdien med en kolon. Parene er atskilt fra hverandre med komma.
Dette bør monteres i strømmen for overføring eller lagring lokalt. Egentlig er JSON -strengen for objektet:
"num": 10, "str3": "tre"Paret for feltet med nullverdi er utelatt. Paret for feltet med navnet, men uten en verdi er også utelatt. Metodens navn og definisjonen er også utelatt. Dette betyr at klasseinformasjonen også må overføres. Dette kan gjøres med en foregående JSON -matrise. Ingenting er overført i kodeprøvene til denne artikkelen, så klasseinformasjonen er fremdeles tilgjengelig for å brukes i frajson () .
Fromjson () -metoden konverterer JSON Instantiated Object String tilbake til et Java -objekt i mottaksenden. For å ha samme navn for objektet, må objektets navn overføres (separat) ved mottakende ende. Etter at objektet er gjenskapt ved mottakende ende, kan du få tilgang til feltene og metodene (kalt). I koden ovenfor kalles metoden for å resultere i 5.
Konklusjon
JSON er et serialisert format. Java -objekter kan serialiseres til JSON -format for overføring til en annen datamaskin eller for å lagre lokalt. I den andre enden foregår deserialisering for å ha den samme gjenstanden som er bosatt ved kilden. Deserialisering finner ikke sted når objektet lagres. Ikke bare matriser og instantierte objekter kan serialiseres. Andre objekter som kart og samlinger kan serialiseres og deserialiseres. Java -biblioteket som kan brukes til disse prosessene er GSON -biblioteket. Metoden, tojson () brukes til serialisering, og den andre metoden, frajson (), brukes til deserialisering.