Golang Marshal i Unmarshal

Golang Marshal i Unmarshal
Marshaling odnosi się do przekształcenia obiektu w określony format danych, który jest odpowiedni do transmisji.

JSON jest jednym z najpopularniejszych formatów wymiany danych. Jest uproszczony, czynny człowieka i bardzo elastyczny. Jest to doskonały wybór dla interfejsów API i większości transferu danych. Urządzenie, które masz, prawdopodobnie używa JSON do wykonania określonego zadania.

W takim przypadku ważne jest nauczenie się pracy z JSON. W tym przewodniku dowiemy się, jak pracować.

Golang Marshal

Kodowanie i dekodowanie informacji JSON w Go jest dostarczany przez pakiet kodowania/JSON. Jest częścią standardowej biblioteki; dlatego nie musisz go instalować.

Będziesz jednak musiał go zaimportować, zanim będziesz mógł go użyć.

Pakiet Econding/JSON koduje dowolny typ danych do prawidłowego ciągu JSON, jak zobaczymy w tych przykładach.

Przed omówieniem, jak kodować struktury GO, zacznijmy od podstawowych typów danych.

Funkcja marszałka JSON

Poniżej opisano składnię funkcji marszałek zgodnie z definicją w pakiecie.

Func Marshal (V interfejs ) ([] bajt, błąd)

Funkcja przyjmuje dowolny typ danych jako argument. Funkcja zwraca plasterek bajtowy, a podczas procesu marszałka napotyka błąd.

Marshal int

Możemy marszał typ liczby całkowitej, jak pokazano w poniższym przykładzie:

Pakiet Main
import (
„Kodowanie/JSON”
„FMT”
"odbijać"
)
funcMain ()
I: = 100
Marshal_int, _: = JSON.Marszałek (i)
// WYPOSAŻENIE
fmt.Println („przed obsadą:”, zastanów się.Typeof (marshal_int))
fmt.Println („After Cast:”, zastanawiaj się.Typeof (string (marshal_int)))

W powyższym przykładzie zaczynamy od zaimportowania wymaganych pakietów. Potrzebujemy kodowania/JSON, FMT i pakietu odbijania w naszym przykładzie.

Używamy JSON.Marshal () metoda marszałek i wartości całkowitej. Zauważysz, że funkcja zwraca niezint8 (8-bitowa liczba całkowita niepodpisana) lub bajt. Musimy rzucić go na ciąg, jak pokazano na poniższym wyjściu:

$ Go Run Marshall.Iść
Przed obsadą: [] uint8
Po obsadzie: String

Zwraca to ciąg liczby całkowitych.

String marszałka.

Możemy marszał typ ciągu, jak pokazano w poniższym przykładzie:

FUNCMARSHAL_STR ()
Marshaled_str, _: = JSON.Marshal („Linuxhint”)
fmt.Println („Marshaled String:”, Marshaled_str)

Jeśli uruchomimy powyższy kod, powinniśmy przekształcić ciąg w kawałek bajtów jako:

String zebrany: [34 76 105 110 117 120 104 105 110 116 34]

Marshall Bool

Możesz także marszał typ boolean za pomocą funkcji marszałka. Rozważ poniższy przykład:

FUNCMARSHAL_BOOL ()
Marshaled_bool, _: = JSON.Marszałek (fałsz)
fmt.Println (Marshaled_bool)

Marszałek

Marszałek pływający typ, jak pokazano:

FUNCMARSHAL_FLOAT ()
Marshaled_Float, _: = JSON.Marszałek (3.14159)
fmt.Println (Marshaled_Float)

Marszałek

Poniższy przykład ilustruje, jak marszał kawałek w Go:

FUNCMARSHAL_SLICE ()
slice_raw: = [] String „Microsoft”, „Google”, „Amazon”
Marshaled_Slice, _: = JSON.Marszałek (slice_raw)
fmt.Println (string (Marshaled_Slice))

Marszałek struktura

Aby zmarandować strukturę w Go, rozważ poniższy przykład:

FUNCMARSHAL_STRUCT ()
Wpisz STRUCT PRACOWNIKA
Ciąg Full_name
Wiek int
Emerytowany bool
Wynagrodzenie int

marshal_structu, _: = JSON.Marshal (pracownik Full_name: „John Doe”, wiek: 32, emeryt: Fałsz, pensja: 140000)
fmt.Println (string (marshal_struct))

Powyższa funkcja przykładowa ilustruje, jak marszał typ struktury w Go.

Powstałe wyjście jest jak pokazano:

„Full_name”: „John Doe”, „Age”: 32, „emeryt”: false, „pensja”: 140000

Powyższe przedstawia struktura wysunięta na prawidłowy ciąg JSON.

Golang Unmarshal

Unmarshal jest sprzeczny z marszałkiem. Pozwala na konwersję danych bajtów na oryginalną strukturę danych.

W Go Unmarshaling jest obsługiwany przez JSON.Metoda unmarshal ().

Rozważ przykładowy ciąg JSON jako:

„Full_name”: „John Doe”, „Age”: 32, „emeryt”: false, „pensja”: 140000

Zacznijmy od utworzenia struktury dopasowania kodu bajtowego po wykonaniu Unmarshal.

Wpisz Struktura użytkownika
Full_name String „JSON:„ Full_name ”''
String wiekowy „JSON:„ wiek ”''
Emerytowany bool „JSON:„ emeryt ”''
Wynagrodzenie int 'json: „pensja”'

Następnym krokiem jest utworzenie ciągu JSON w kodzie bajtów. Po uzyskaniu kodu bajtowego możemy go niezmarować do struktury.

user_info_bytes: = [] bajte (user_info)

Po uzyskaniu kodu bajtowego możemy go niezmarować do struktury.

VAR PRACOWNIK Użytkownik
JSON.Unmarshal (user_info_bytes i pracownik)

Po uzyskaniu struktury możemy uzyskać dostęp do wartości jako:

fmt.Println (pracownik.Full_name)
fmt.Println (pracownik.Wiek)
fmt.Println (pracownik.Emerytowany)
fmt.Println (pracownik.Wynagrodzenie)

Powyższy kod powinien zwrócić:

nieznany z nazwiska
32
FAŁSZ
140000

Pełny kod źródłowy jest pokazany poniżej:

func unmarshal_struct ()
user_info: = '„Full_name”: „John Doe”, „Age”: 32, „emeryt”: false, „wynagrodzenie”: 140000' '
Wpisz Struktura użytkownika
Full_name String „JSON:„ Full_name ”''
String wiekowy „JSON:„ wiek ”''
Emerytowany bool „JSON:„ emeryt ”''
Wynagrodzenie int 'json: „pensja”'

user_info_bytes: = [] bajte (user_info)
VAR PRACOWNIK Użytkownik
JSON.Unmarshal (user_info_bytes i pracownik)
fmt.Println (pracownik.Full_name)
fmt.Println (pracownik.Wiek)
fmt.Println (pracownik.Emerytowany)
fmt.Println (pracownik.Wynagrodzenie)

Wniosek

Marszałek i Unmarshal stanowią ważny wymóg transformacji danych. Jako programiści ważne jest zapoznanie się z tym, jak wykonywać takie operacje. Ten samouczek z łatwością służy temu celowi.

Dziękujemy za przeczytanie i szczęśliwe kodowanie!