🔥 JSON, COMO DECODIFICAR

¿Cómo decodificar un JSON en Go?

Cuando estamos trabajando con JSON en Go, es común necesitar transformar datos en formato JSON a estructuras propias del lenguaje. Así como usamos json.Marshal para convertir una estructura a JSON, el proceso inverso se realiza con json.Unmarshal, permitiendo convertir un JSON representado como slice de bytes en una estructura de Go.

Para comenzar, es fundamental definir la estructura que recibirá los datos decodificados. Esto facilita la codificación y decodificación de JSON en Golang, ya que cada campo de la estructura debe coincidir con las claves del JSON.

type Pais struct {
    Nombre      string
    Habitantes  int
    Capital     string
    Idiomas     []string
}

Luego, se prepara el string que contiene el JSON a decodificar. Este paso es esencial para codificar y decodificar JSON con Go de manera eficiente y sin errores.

datosJson := `{"nombre":"Canada","habitantes":37314442,"capital":"Ottawa","idiomas":["Inglés","Frances"]}`

A continuación, se crea una instancia de la estructura que almacenará los datos decodificados. Este procedimiento es clave para quienes desean aprender cómo decodificar un JSON en Go de forma sencilla.

p := Pais{}

El siguiente paso consiste en utilizar la función json.Unmarshal para transformar el slice de bytes en la estructura correspondiente. Si ocurre algún inconveniente durante la decodificación, se generará un error. Este método es ampliamente utilizado para leer datos JSON en Golang en aplicaciones reales.

err := json.Unmarshal([]byte(datosJson), &p)

El programa completo, integrando todos los pasos anteriores, se muestra a continuación:

package main

import (
    "encoding/json"
    "fmt"
    "log"
)

type Pais struct {
    Nombre     string
    Habitantes int
    Capital    string
    Idiomas    []string
}

func main() {
    datosJson := `{"nombre":"Canada","habitantes":37314442,"capital":"Ottawa","idiomas":["Inglés","Frances"]}`
    p := Pais{}
    err := json.Unmarshal([]byte(datosJson), &p)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%+v\n", p)
}

Al ejecutar el programa, se puede observar cómo el JSON es convertido correctamente en una estructura de Go, mostrando los datos de manera legible.

$ go run main.go
{Nombre:Canada Habitantes:37314442 Capital:Ottawa Idiomas:[Inglés Frances]}

Conclusión

La decodificación de JSON en Go es una habilidad esencial para cualquier desarrollador que trabaje con intercambio de datos en aplicaciones modernas. Utilizando el paquete estándar encoding/json, es posible transformar fácilmente datos en formato JSON a estructuras de Go, lo que permite manipular la información de manera segura y eficiente. Definir correctamente las estructuras y comprender el funcionamiento de json.Unmarshal son pasos fundamentales para evitar errores y garantizar la integridad de los datos. Además, este proceso es ampliamente utilizado en servicios web, APIs y aplicaciones que requieren comunicación entre sistemas. Dominar estas técnicas facilita la integración y el procesamiento de datos en proyectos reales, mejorando la calidad y mantenibilidad del código.


Cuestionario de repaso

  1. ¿Qué función de Go se utiliza para decodificar un JSON en una estructura?
  2. ¿Por qué es importante que los campos de la estructura coincidan con las claves del JSON?
  3. ¿Qué ocurre si hay un error durante la decodificación con json.Unmarshal?
  4. ¿Cómo se define una estructura en Go para recibir datos JSON?
  5. ¿Para qué sirve el paquete encoding/json en Go?
  6. ¿Qué tipo de datos se utiliza para representar el JSON antes de decodificarlo?
  7. ¿Cómo se imprime el resultado de la decodificación en el ejemplo mostrado?
  8. ¿En qué casos es útil decodificar JSON en aplicaciones Go?
  9. ¿Qué ventajas ofrece el uso de estructuras al trabajar con JSON en Go?
  10. ¿Qué pasos principales se deben seguir para decodificar un JSON en Go?