🥇 JSON, Como decodificar.

De igual forma que podemos convertir una estructura en una estructura JSON utilizando json.Marshal, podemos convertir un JSON en forma de slice de bytes a una estructura de Go utilizando json.Unmarshal.

Primero necesitamos la estructura sobre la cual se va a decodificar el JSON.

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

Ahora preparamos el string con la estructura JSON.

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

Preparamos la estructura que recibirá la el json decodificado.

p := Pais{}

Y usamos json.Unmarshal para transformar el slice de bytes en una estructura. Si este proceso no se puede realizar se generará un error.

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

Si revisamos el programa de forma completa, lucirá de esta forma.

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)
}

Si ejecutamos el programa, podremos ver el json convertido en estructura.

$ go run main.go
{Nombre:Canada Habitantes:37314442 Capital:Ottawa Idiomas:[Inglés Frances]}
JSON, Data fields en estructuras de Golang. JSON, Mapeo de estructuras.
comments powered by Disqus