Gson Tojson i od JSON dla JSON

Gson Tojson i od JSON dla JSON

Serializacja i deserializacja

Plik można zapisać na dysku lub wysłać przez sieć, po prostu wysyłając plik tak, jak jest bajtem, od samego początku (jako kod źródłowy, bajkod lub kod binarny). To nie jest serializacja. Serializacja to proces przekształcania obiektu w strumień bajtów, do przechowywania lub transmisji, nadal jako obiekt. To nie jest to samo, co po prostu czytanie bajtów od początku i wysyłanie lub zapisanie. Przeciwieństwem serializacji jest deserializacja. Nie serializacja muush, jako proces, odbywa się z prymitywnymi obiektami samodzielnie.

JSON oznacza notację obiektu JavaScript. JSON jest formatem serializacji. Obiekt Java (zdefiniowany) można przekonwertować na reprezentację JSON (ciąg) do transmisji lub zapisywania. W przypadku ponownego użycia reprezentacja JSON jest przekonwertowana z powrotem do obiektu Java. Gson to biblioteka Java używana do konwersji w obu kierunkach.

Aby serializować, użyj metody TOJSON () obiektu Gson. Aby deserializować, użyj metody fromJson () obiektu GSON. W tym artykule wyjaśniono podstawy serializacji obiektów Java do reprezentacji JSON, z metodą ToJson () i deserializacją reprezentacji JSON (ciąg), do obiektu Java, z metodą fromJson ().

Treść artykułu

  • Pobieranie i konfigurowanie biblioteki GSON
  • Prymitywne obiekty Java
  • Szyk
  • Obiekt
  • Wniosek

Pobieranie i konfigurowanie biblioteki GSON

Biblioteka GSON jest dostarczana jako plik jar. Biblioteka taka jak GSON jest określana jako zależność. Pobierz jest bezpłatny. Reszta tej sekcji wyjaśnia, co autor zrobił ze swoim gospodarzem Ubuntu OS Computer. Czytelnik może powtórzyć lub modyfikować podejście.

Utworzył katalog, zwany zależnościami, w/home/user/ma:/home/użytkownik/zależności, w którym użytkownik powinien zostać zastąpiony przez nazwę użytkownika.

Pobrał plik biblioteki, GSON-2.8.9.słoik z hiperłącza:

https: // wyszukiwanie.Maven.Org/RemoteContent?filepath = com/google/code/gson/gson/2.8.9/GSON-2.8.9.słoik

i zapisałem go, tak jak jest w katalogu zależności.

Następnie, w wierszu polecenia, skonfigurował (wprowadził) zmienną klasową, w następujący sposób:

Eksport klasowy =/home/użytkownik/zależności

Program Java powinien mieć, jako minimum, następujące:

import com.Google.Gson.GSON;
Klasa publiczna THEClass
public static void main (string [] args)
Gsongson = nowy gson ();
/ *reszta kodu */

Nazwa pliku kodu źródłowego jest theclass.Jawa. Zwróć uwagę na nazwę importowanego pakietu, który znajduje się w GSON-2.8.9.plik jar. Do kompilacji programu w kodzie bajtów użyto następującego wiersza poleceń:

Javac -classspath/home/user:/home/user/zależności/gson -2.8.9.słoik theclass.Jawa

Zwróć uwagę na przełącznik, -classspath . Są tutaj dwie ścieżki, oddzielone okrężnicy (bez miejsca wokół okrężnicy). Pierwsza to ścieżka do głównego pliku, thass.Jawa; a druga to ścieżka do pliku biblioteki, GSON-2.8.9.słoik.

Powstały kod bajtowy jest uruchamiany z następującym wierszem poleceń:

java -classspath/home/użytkownik:/home/user/zależności/gson -2.8.9.słoik theclass

Przełącznik i dwie ścieżki są nadal na ich pozycjach, z tych samych powodów. Kod bajdów powinien działać z powodzeniem, wszystko jest równe.

Prymitywne obiekty Java

W tej sekcji ilustruje, jaką wartość będzie miała prymitywny obiekt po serializacji, jako ciąg JSON i jaką wartość będzie miała po deserializacji. Aby użyć metod toJSON () i fromJSON (), obiekt GSON musi zostać utworzony z instrukcją takim:

Gson gson = nowy gson ();

gdzie GSON jest przedmiotem GSON, który należy użyć z jego metodami: tojson () do serializacji i fromJson () do deserializacji.

bajt

Rozważ następujący kod w metodzie Main ():

Gsongson = nowy gson ();
bajt bt = 56;
String str = gson.Tojson (BT);
BYTE BTR = GSON.fromJson (str, bajt.klasa);
System.na zewnątrz.println (BTR);

Wyjście to 56. Ten kod serializuje się i deserializuje. Zwróć uwagę na drugi argument fromJson (), który jest bajtem.klasa. Serializacja obiektu typu staje się ciągiem JSON, a deserializacja powinna wrócić do tego samego typu. Dlatego bajt.klasa jest obecna.

int

Rozważ następujący kod w metodzie Main ():

Gsongson = nowy gson ();
int in = 0;
String str = gson.Tojson (in);
int INR = gson.fromJson (str, int.klasa);
System.na zewnątrz.println (INR);

Wyjście to 0. Zwróć uwagę na drugi argument fromJson (), który jest int int.klasa.

podwójnie

Rozważ następujący kod w metodzie Main ():

Gsongson = nowy gson ();
podwójne db = 7.8;
String str = gson.Tojson (DB);
podwójne dbr = gson.fromJson (STR, Double.klasa);
System.na zewnątrz.println (dbr);

Wyjście to 7.8. Zwróć uwagę na drugi argument FromJson (), który jest podwójny.klasa.

zwęglać

Rozważ następujący kod w metodzie Main ():

Gsongson = nowy gson ();
char ch = „e”;
String str = gson.Tojson (CH);
char cr = gson.fromJson (str, char.klasa);
System.na zewnątrz.println (chr);

Wyjście to e. Zwróć uwagę na drugi argument zaJson (), który jest char.klasa.

Boolean

Rozważ następujący kod w metodzie Main ():

Gson gson = nowy gson ();
boolean bl = false;
String str = gson.Tojson (BL);
Boolean Blr = Gson.fromJson (str, boolean.klasa);
System.na zewnątrz.println (BLR);

Wyjście jest fałszywe. Zwróć uwagę na drugi argument o fromJson (), który jest logiczny.klasa.

zero

Rozważ następujący kod w metodzie Main ():

Gson gson = nowy gson ();
String nl = null;
String str = gson.Tojson (NL);
String nlr = gson.fromJson (str, string.klasa);
System.na zewnątrz.println (nlr);

Wyjście jest zerowe. Zwróć uwagę na drugi argument FromJson (), który jest ciągiem.klasa, dla rodzaju null.

Szyk

Tablica dosłownie

Rozważ następujący kod:

Gson gson = nowy gson ();
Double [] dbs = 1.1, 2.2, 3.3, 4.4;
String str = gson.Tojson (DBS);
Double [] dbsr = gson.fromJson (str, Double [].klasa);
System.na zewnątrz.println (dbsr [0]+""+dbsr [1]+""+dbsr [2]+""+dbsr [3]);

Wyjście to:

1.1 2.2 3.3 4.4

Po utworzeniu obiektu Gson tworzona jest podwójna tablica Java. Następnie literał tablicy jest przekonwertowany w ciąg JSON. Tak, chociaż kod dotyczy tablicy tutaj, a nie prymitywnym typem, metoda tojson () jest nadal stosowana i odpowiednio z odbiorcy będzie nadal używany. Literał macierzy strun JSON to:

"[1.1, 2.2, 3.3, 4.4] "

To żądło jest zamontowane w strumieniu, który jest przesyłany lub zapisywany lokalnie. Metoda fromJSON () przekształca literał sznurka JSON THERAY do tablicy Java (literał) na końcu odbierania.

Rozważ następujący kod, który rozpoczyna się wraz z szeregiem ciągów Java, w którym każdy ciąg jest elementem w tabeli czytania:

Gson gson = nowy gson ();
String [] strs = „pen”, „ćwiczenie”, null, „książka podręczająca”;
String str = gson.Tojson (STRS);
String [] strsr = gson.fromJson (str, string [].klasa);
System.na zewnątrz.println (strsr [0]+","+strsr [1]+","+strsr [2]+","+strsr [3]);

Wyjście to:

Pióro, książka przedsiębiorstwa, null, podręcznik

Po utworzeniu obiektu Gson tworzona jest tablica ciągów Java. Następnie literał tablicy jest przekonwertowany w ciąg JSON. Literał macierzy strun JSON to:

„[„ Pen ”,„ ćwiczenie ”, NULL,„ Text ”]" "

To żądło jest zamontowane w strumieniu, który jest przesyłany lub zapisywany lokalnie. Metoda fromJSON () przekształca literał sznurka JSON TRAY Strings z powrotem do tablicy Java (literał) na końcu odbierania. Zauważ, że typ klasy (ciąg []) jest potrzebny do konwersji wstecznej.

Wysyłanie tablicy dosłownej pod nazwą tablicy

Problem z powyższym schematem polega na tym, że w miejscu docelowym tablica prawdopodobnie otrzyma inną nazwę zrekonstruowanego kodu Java. Nazwa tablicy może być wysłana jako jedno słowo, poprzedzająca tablicę zainteresowań w celu rozwiązania tego problemu. Program Java otrzyma dwie tablice na końcu odbierania i odpowiednio ich zinterpretuje.

Obiekt

Treść obiektu

Rozważ następujący kod:

import com.Google.Gson.GSON;
Aclass klasy

int num = 10;
String str1 = null;
String Str2;
String str3 = "trzy";
int Mthd (int it)

zwróc to;

Zaczyna się od importu pakietu GSON, a następnie jest opis klasy o nazwie Aclass. Klasa ma cztery pola (właściwości) i jedną metodę. Jedna z wartości pól jest zerowa, a druga nie ma żadnej wartości. Odpowiednim kodem w funkcji Main () dla tej klasy jest:

Gsongson = nowy gson ();
Aclass obj = new aclass ();
String str = gson.Tojson (OBJ);
Aclassobjr = gson.fromJson (str, aclass.klasa);
System.na zewnątrz.println (objr.num+","+objr.str1+","+objr.str2+”,„+objr.str3);
int in = objr.MTHD (5);
System.na zewnątrz.println (in);

Wyjście składa się z dwóch linii, czyli:

10, Null, Null, trzy
5

Po utworzeniu obiektu GSON, inny obiekt, OBJ jest utworzony z klasy, Aclass. Następnie literał tablicy jest przekonwertowany w ciąg JSON. Tak, chociaż kod dotyczy tutaj instanowanego obiektu, a nie typem prymitywnym, metoda toJSON () jest nadal używana i odpowiednio, z JSON () będzie nadal używany w odbiorniku. String treści obiektów JSON instanted (klasę) jest taki:

„num”: 10, „str1”: null, „str2: null,„ str3 ”:„ trzy ”,„ mthd ”:„ int mthd (int It) return it; ”

Zwróć uwagę na szelki ograniczające zamiast kwadratowych nawiasów, aby je odróżnić od JSON. Składa się z par kluczy/wartości. Klucz jest oddzielony od jego wartości za pomocą okrężnicy. Pary są oddzielone od siebie przecinkami.

Powinno to być zamontowane w strumieniu w celu transmisji lub zapisywania lokalnie. W rzeczywistości ciąg JSON dla obiektu jest:

„num”: 10, „str3”: „trzy”

Para dla pola o wartości zerowej jest pomijana. Para dla pola z nazwą, ale bez wartości jest również pomijana. Nazwa metody i jej definicja są również pominięte. Oznacza to, że informacje o klasie również muszą być przesyłane. Można to zrobić za pomocą poprzedniej tablicy JSON. Nic nie zostało przesłane w próbkach kodu tego artykułu, więc informacje o klasie są nadal dostępne do użycia w fromJson () .

Metoda fromJSON () przekształca ciąg obiektowy JSON z powrotem do obiektu Java na końcu odbierania. Aby mieć tę samą nazwę obiektu, nazwa obiektu musi być przesyłana (osobno) na końcu odbierania. Po odtworzeniu obiektu na końcu odbierania pola i metody można uzyskać (wywoływane). W powyższym kodzie metoda jest wywoływana w celu uzyskania 5.

Wniosek

JSON to serializowany format. Obiekty Java mogą być serializowane do formatu JSON w celu transmisji na inny komputer lub zapisywać lokalnie. Z drugiej strony ma miejsce deserializacja, aby mieć ten sam obiekt zamieszkały u źródła. Deserializacja nie ma miejsca, gdy obiekt zostanie zapisany. Nie tylko tablice i instanowane obiekty można serializować. Inne obiekty, takie jak mapy i kolekcje, mogą być serializowane i deserializowane. Biblioteka Java, której można użyć do tych procesów, to biblioteka GSON. Jego metoda, ToJson () jest stosowana do serializacji, a do deserializacji stosuje się jej inna metoda, odJson ().