Maresciallo di Golang e scioglimento

Maresciallo di Golang e scioglimento
Il marshaling si riferisce alla trasformazione di un oggetto in un formato di dati specifico adatto alla trasmissione.

JSON è uno dei formati di interscambio di dati più popolari. È semplicistico, leggibile dall'uomo e molto flessibile. È una scelta eccellente per le API e la maggior parte dei dati di trasferimento. Il dispositivo che hai è probabilmente utilizzato JSON per eseguire un'attività specifica.

In tal caso, imparare a lavorare con JSON è importante. In questa guida, impareremo come lavorare.

Maresciallo di Golang

La codifica e la decodifica delle informazioni JSON in GO sono fornite dal pacchetto di codifica/JSON. Fa parte della libreria standard; Quindi non è necessario installarlo.

Dovrai importarlo, però, prima di poterlo usare.

Il pacchetto EconDing/JSON codifica qualsiasi tipo di dati su una stringa JSON valida, come vedremo in questi esempi.

Prima di discutere come codificare le strutture di GO, iniziamo con i tipi di dati di base.

Funzione del maresciallo JSON

Quanto segue descrive la sintassi per la funzione del maresciallo come definito nel pacchetto.

func marshal (interfaccia v ) ([] byte, errore)

La funzione prende qualsiasi tipo di dati come argomento. La funzione restituisce una fetta di byte e si riscontra un errore durante il processo del maresciallo.

Maresciallo int

Possiamo mettere in mare un tipo intero come mostrato nell'esempio seguente:

Pacchetto principale
importazione (
"codifica/json"
"FMT"
"riflettere"
)
funcmain ()
i: = 100
marshal_int, _: = json.Maresciallo (i)
// Controlla il tipo
fmt.Println ("prima del cast:", riflette.Typeof (marshal_int))
fmt.Println ("Dopo il cast:", riflette.Typeof (string (marshal_int)))

Nell'esempio sopra, iniziamo importando i pacchetti richiesti. Abbiamo bisogno della codifica/JSON, FMT e del pacchetto Reflect nel nostro esempio.

Usiamo il JSON.Metodo Marshal () al valore di maresciallo e intero. Noterai che la funzione restituisce un Unint8 (un numero intero senza segno a 8 bit) o ​​byte. Dobbiamo lanciarlo su una stringa come mostrato nell'output di seguito:

$ go run marshall.andare
Prima del cast: [] uint8
Dopo il cast: stringa

Questo restituisce una stringa intera.

String del maresciallo.

Possiamo mettere in mare un tipo di stringa come mostrato nell'esempio seguente:

funcmarshal_str ()
marshaled_str, _: = json.Maresciallo ("Linuxhint")
fmt.Println ("stringa di marshalled:", marshaled_str)

Se eseguiamo il codice sopra, dovremmo mettere la stringa marshalling in una fetta di byte come:

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

Marshall Bool

Puoi anche maresciallo di un tipo booleano usando la funzione del maresciallo. Considera l'esempio seguente:

funcmarshal_bool ()
marshaled_bool, _: = json.Maresciallo (falso)
fmt.Println (marshaled_bool)

Maresciallo galleggiante

Maresciallo un tipo fluttuante come mostrato:

funcmarshal_float ()
marshaled_float, _: = json.Maresciallo (3.14159)
fmt.Println (marshaled_float)

Slice di maresciallo

L'esempio seguente illustra come marshalling una fetta in Go:

funcmarshal_slice ()
slice_raw: = [] String "Microsoft", "Google", "Amazon"
marshaled_slice, _: = json.Maresciallo (slice_raw)
fmt.Println (String (marshaled_slice))

Struttura sul maresciallo

Per maresciallo una struttura in Go, considera l'esempio seguente:

funcmarshal_struct ()
Tipo Struttura dei dipendenti
Stringa full_name
Età int
BOOL in pensione
Stipendio int

marshal_struct, _: = json.Marshal (dipendente full_name: "John Doe", età: 32, in pensione: falso, stipendio: 140000)
fmt.Println (string (marshal_struct))

La funzione di esempio sopra illustra come marshall un tipo di strumento in GO.

L'output risultante è come mostrato:

"Full_name": "John Doe", "Age": 32, "Refired": False, "Stipendio": 140000

Quanto sopra rappresenta la struct marshalling in una stringa JSON valida.

Golang Unmarshal

Unmarshal è il contrario del maresciallo. Ti consente di convertire i dati di byte nella struttura dei dati originale.

In Go, lo sbalzo è gestito dal JSON.Metodo UnMarshal ().

Considera un esempio di stringa JSON come:

"Full_name": "John Doe", "Age": 32, "Refired": False, "Stipendio": 140000

Iniziamo creando una struttura per abbinare il codice byte dopo aver eseguito lo sbalzo.

Digita utente struct
Full_name string 'json: "full_name"'
Age String 'Json: "Age"'
BOOL in pensione 'json: "in pensione"'
Stipendio int 'json: "stipendio"'

Il prossimo passo è creare la stringa JSON nel codice byte. Una volta che abbiamo il codice byte, possiamo slegarlo in una struttura.

user_info_bytes: = [] byte (user_info)

Una volta che abbiamo il codice byte, possiamo smarrirlo nella struttura.

VAR Employee User
JSON.Unmarshal (user_info_bytes e dipendente)

Una volta che abbiamo la struttura, possiamo accedere ai valori come:

fmt.Println (dipendente.Nome e cognome)
fmt.Println (dipendente.Età)
fmt.Println (dipendente.Pensionato)
fmt.Println (dipendente.Stipendio)

Il codice sopra dovrebbe restituire:

John Doe
32
falso
140000

Il codice sorgente completo è come mostrato di seguito:

func unmarshal_struct ()
user_info: = '"full_name": "John Doe", "Age": 32, "in pensione": false, "stipendio": 140000'
Digita utente struct
Full_name string 'json: "full_name"'
Age String 'Json: "Age"'
BOOL in pensione 'json: "in pensione"'
Stipendio int 'json: "stipendio"'

user_info_bytes: = [] byte (user_info)
VAR Employee User
JSON.Unmarshal (user_info_bytes e dipendente)
fmt.Println (dipendente.Nome e cognome)
fmt.Println (dipendente.Età)
fmt.Println (dipendente.Pensionato)
fmt.Println (dipendente.Stipendio)

Conclusione

Il maresciallo e lo sbalzo rappresentano un importante requisito di trasformazione dei dati. Come programmatori, è importante familiarizzare su come eseguire tali operazioni. Questo tutorial serve a tale scopo con facilità.

Grazie per la lettura e la codifica felice!