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
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ściProgram Java powinien mieć, jako minimum, następujące:
import com.Google.Gson.GSON;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.JawaZwróć 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 theclassPrzełą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 ();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 ();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 ();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 ();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 ();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 ();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 ();Wyjście to:
1.1 2.2 3.3 4.4Po 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 ();Wyjście to:
Pióro, książka przedsiębiorstwa, null, podręcznikPo 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;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 ();Wyjście składa się z dwóch linii, czyli:
10, Null, Null, trzyPo 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 ().