Golang Marshal e UNARSHAL

Golang Marshal e UNARSHAL
O marechaling refere -se a transformar um objeto em um formato de dados específico que é adequado para transmissão.

JSON é um dos formatos de intercâmbio de dados mais populares. É simplista, legível pelo homem e muito flexível. É uma excelente opção para APIs e a maioria das transferências de dados. O dispositivo que você tem provavelmente está usando o JSON para executar uma tarefa específica.

Nesse caso, aprender a trabalhar com JSON é importante. Neste guia, aprenderemos a trabalhar.

Golang Marshal

As informações de codificação e decodificação do JSON em Go são fornecidas pelo pacote de codificação/json. Faz parte da biblioteca padrão; Portanto, você não precisa instalá -lo.

Você precisará de importar, porém, antes de poder usá -lo.

O pacote Econding/JSON codifica qualquer tipo de dados para uma string json válida, como veremos nesses exemplos.

Antes de discutir como codificar as estruturas, vamos começar com os tipos de dados básicos.

JSON Marshal Função

A seguir, descreve a sintaxe para a função de marechal, conforme definido no pacote.

Func Marshal (interface v ) ([] byte, erro)

A função leva qualquer tipo de dados como argumento. A função retorna uma fatia de byte e um erro é encontrado durante o processo do marechal.

Marshal int

Podemos marcar um tipo de número inteiro, como mostrado no exemplo abaixo:

Pacote principal
importação (
"Encoding/JSON"
"FMT"
"Reflita"
)
funcmain ()
I: = 100
marshal_int, _: = json.Marshal (i)
// Tipo de verificação
fmt.Println ("antes do elenco:", reflita.Typeof (marshal_int))
fmt.Println ("após o elenco:", reflita.Typeof (string (marshal_int)))

No exemplo acima, começamos importando os pacotes necessários. Precisamos da codificação/JSON, FMT, e o pacote refletir em nosso exemplo.

Usamos o JSON.Marshal () Método para marechal e valor inteiro. Você notará que a função retorna um UNINT8 (um número inteiro não assinado de 8 bits) ou byte. Precisamos lançá -lo para uma string, como mostrado na saída abaixo:

$ go run marshall.ir
Antes do elenco: [] uint8
Após o elenco: String

Isso retorna uma corda inteira.

Corda do marechal.

Podemos marcar um tipo de string, como mostrado no exemplo abaixo:

funcmarshal_str ()
marshaled_str, _: = json.Marshal ("Linuxhint")
fmt.Println ("string marechaled:", marshaled_str)

Se executarmos o código acima, devemos colocar a string organizada em uma fatia de bytes como:

Faixa marechaled: [34 76 105 110 117 120 104 105 110 116 34]

Marshall Bool

Você também pode marcar um tipo booleano usando a função marechal. Considere o exemplo abaixo:

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

Marechal flutuando

Marechal um tipo flutuante como mostrado:

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

Fatia de marechal

O exemplo abaixo ilustra como marcar uma fatia em Go:

funcmarshal_slice ()
Slice_raw: = [] String "Microsoft", "Google", "Amazon"
marshaled_slice, _: = json.Marshal (Slice_raw)
fmt.Println (string (marshaled_slice))

Marechal struct

Para organizar uma estrutura, considere o exemplo abaixo:

funcmarshal_struct ()
Tipo de funcionário struct
Full_Name String
Idade int
Bool aposentado
Salário Int

marshal_struct, _: = json.Marshal (funcionário full_name: "John Doe", idade: 32, aposentado: falso, salário: 140000)
fmt.Println (string (marshal_struct))

A função de exemplo acima ilustra como marcar um tipo de estrutura.

A saída resultante é como mostrado:

"Full_Name": "John Doe", "Age": 32, "Aposentado": Falso, "Salário": 140000

O acima representa a estrutura organizada em uma string válida JSON.

Golang UNARSHAL

UNARSHAL é o contrário do marechal. Ele permite que você converta dados de byte na estrutura de dados original.

Em GO, o UNARSHALING é tratado pelo JSON.Método UNMARSHAL ().

Considere um exemplo de string json como:

"Full_Name": "John Doe", "Age": 32, "Aposentado": Falso, "Salário": 140000

Vamos começar criando uma estrutura para combinar com o código de byte depois de executar o UNARSHAL.

Tipo de estrutura de usuário
Full_name String 'JSON: "Full_Name"'
String de idade 'json: "idade"'
Bool aposentado 'JSON: "aposentado"'
Salário int 'json: "salário"'

O próximo passo é criar a string json no código de byte. Depois de termos o código de byte, podemos soltá -lo em uma estrutura.

user_info_bytes: = [] byte (user_info)

Depois de termos o código de byte, podemos soltá -lo em estrutura.

VAR Usuário de funcionários
JSON.UMARSHAL (User_info_bytes, & funcionário)

Depois de termos a estrutura, podemos acessar os valores como:

fmt.Println (funcionário.Nome completo)
fmt.Println (funcionário.Idade)
fmt.Println (funcionário.Aposentado)
fmt.Println (funcionário.Salário)

O código acima deve retornar:

John Doe
32
falso
140000

O código -fonte completo é como mostrado abaixo:

Func UNMARSHAL_STRUCT ()
user_info: = '"Full_name": "John Doe", "Age": 32, "aposentado": false, "Salário": 140000'
Tipo de estrutura de usuário
Full_name String 'JSON: "Full_Name"'
String de idade 'json: "idade"'
Bool aposentado 'JSON: "aposentado"'
Salário int 'json: "salário"'

user_info_bytes: = [] byte (user_info)
VAR Usuário de funcionários
JSON.UMARSHAL (User_info_bytes, & funcionário)
fmt.Println (funcionário.Nome completo)
fmt.Println (funcionário.Idade)
fmt.Println (funcionário.Aposentado)
fmt.Println (funcionário.Salário)

Conclusão

Marechal e UNARSHAL representam um requisito importante da transformação de dados. Como programadores, é importante nos familiarizar com como executar essas operações. Este tutorial serve a esse propósito com facilidade.

Obrigado pela leitura e codificação feliz!