Mariscal de Golang y Unmarshal

Mariscal de Golang y Unmarshal
El mariscal se refiere a transformar un objeto en un formato de datos específico que sea adecuado para la transmisión.

JSON es uno de los formatos de intercambio de datos más populares. Es simplista, legible por humanos y muy flexible. Es una excelente opción para las API y la mayoría de las transferencias de datos. El dispositivo que tiene es probable que esté usando JSON para realizar una tarea específica.

En tal caso, aprender a trabajar con JSON es importante. En esta guía, aprenderemos a trabajar.

Mariscal de golang

El paquete de codificación/JSON proporciona la información de codificación y decodificación en GO. Es parte de la biblioteca estándar; Por lo tanto, no necesita instalarlo.

Sin embargo, necesitará importarlo antes de poder usarlo.

El paquete Econding/JSON codifica cualquier tipo de datos a una cadena JSON válida, como veremos en estos ejemplos.

Antes de discutir cómo codificar las estructuras Go, comencemos con los tipos de datos básicos.

Función json mariscal

A continuación se describe la sintaxis para la función del mariscal como se define en el paquete.

FUNC Marshal (V interfaz ) ([] byte, error)

La función toma cualquier tipo de datos como argumento. La función devuelve una porción de byte y se encuentra un error durante el proceso de mariscal.

Mariscal int

Podemos organizar un tipo entero como se muestra en el ejemplo a continuación:

paquete principal
importar (
"Codificación/JSON"
"FMT"
"reflejar"
)
funcmain ()
I: = 100
Marshal_int, _: = json.Mariscal (i)
// Tipo de verificación
fmt.Println ("antes del elenco:", reflejar.Typeof (Marshal_int))
fmt.Println ("después del elenco:", reflejar.TypeOf (String (Marshal_int)))

En el ejemplo anterior, comenzamos importando los paquetes requeridos. Necesitamos la codificación/JSON, FMT y el paquete de reflexión en nuestro ejemplo.

Usamos el json.Método Marshal () para mariscal y valor entero. Notará que la función devuelve un inint8 (un entero sin firmar de 8 bits) o byte. Necesitamos lanzarla a una cadena como se muestra en la salida a continuación:

$ Go Run Marshall.ir
Antes del elenco: [] Uint8
Después del elenco: cadena

Esto devuelve una cadena entera.

Cuerda mariscal.

Podemos organizar un tipo de cadena como se muestra en el ejemplo a continuación:

funcmarshal_str ()
Marshaled_str, _: = json.Marshal ("Linuxhint")
fmt.Println ("Cadena mariscal:", Marshaled_str)

Si ejecutamos el código anterior, debemos obtener la cadena en una porción de bytes como:

Cadena mariscal: [34 76 105 110 117 120 104 105 110 116 34]

Marshall Bool

También puede reunir un tipo booleano utilizando la función mariscal. Considere el ejemplo a continuación:

funcmarshal_bool ()
Marshaled_Bool, _: = JSON.Mariscal (falso)
fmt.Println (Marshaled_bool)

Mariscal

Mariscal Un tipo flotante como se muestra:

funcmarshal_float ()
Marshaled_float, _: = json.Mariscal (3.14159)
fmt.Println (Marshaled_float)

Rebanada de mariscal

El siguiente ejemplo ilustra cómo reunir una porción en Go:

funcmarshal_slice ()
slice_raw: = [] string "Microsoft", "Google", "Amazon"
Marshaled_Slice, _: = JSON.Marshal (SLICE_RAW)
fmt.Println (String (Marshaled_Slice))

Estructura mariscal

Para reunir una estructura en Go, considere el ejemplo a continuación:

funcmarshal_struct ()
Tipo de estructura del empleado
Cadena Full_Name
Edad int
Bool retirado
Salario int

Marshal_struct, _: = json.Marshal (Empleado Full_Name: "John Doe", Edad: 32, Retirado: Falso, Salario: 140000)
fmt.Println (string (marshal_struct))

La función de ejemplo anterior ilustra cómo reunir un tipo de estructura en Go.

La salida resultante es como se muestra:

"Full_name": "John Doe", "Age": 32, "Retirado": Falso, "Salario": 140000

Lo anterior representa la estructura organizada en una cadena JSON válida.

Golang Unmarshal

Unmarshal es el contrario de Marshal. Le permite convertir datos de bytes en la estructura de datos original.

En Go, la soltera es manejada por el json.Método unmarshal ().

Considere una cadena JSON de ejemplo como:

"Full_name": "John Doe", "Age": 32, "Retirado": Falso, "Salario": 140000

Comencemos creando una estructura para que coincida con el código de byte después de realizar el unmarshal.

Escriba la estructura de usuario
Full_name string 'json: "full_name"'
Age String 'JSON: "Age"'
Bool 'json retirado: "retirado"'
Salario int 'json: "salario"'

El siguiente paso es crear la cadena JSON en el código de byte. Una vez que tenemos el código de byte, podemos desmarcarlo en una estructura.

user_info_bytes: = [] byte (user_info)

Una vez que tenemos el código de byte, podemos soltarlo en estructura.

Usuario de empleados de VAR
json.Unmarshal (user_info_bytes y empleado)

Una vez que tenemos la estructura, podemos acceder a los valores como:

fmt.Println (empleado.Nombre completo)
fmt.Println (empleado.Edad)
fmt.Println (empleado.Jubilado)
fmt.Println (empleado.Salario)

El código anterior debe devolver:

John Doe
32
FALSO
140000

El código fuente completo es el que se muestra a continuación:

FUNC unmarshal_struct ()
user_info: = '"full_name": "John Doe", "Age": 32, "Retired": False, "Salario": 140000'
Escriba la estructura de usuario
Full_name string 'json: "full_name"'
Age String 'JSON: "Age"'
Bool 'json retirado: "retirado"'
Salario int 'json: "salario"'

user_info_bytes: = [] byte (user_info)
Usuario de empleados de VAR
json.Unmarshal (user_info_bytes y empleado)
fmt.Println (empleado.Nombre completo)
fmt.Println (empleado.Edad)
fmt.Println (empleado.Jubilado)
fmt.Println (empleado.Salario)

Conclusión

Marshal y Unmarshal representan un requisito importante de transformación de datos. Como programadores, es importante familiarizarnos sobre cómo realizar tales operaciones. Este tutorial sirve ese propósito con facilidad.

Gracias por leer y feliz codificación!