¿Cómo trabajar con streams json en Go?
Cuando se trabaja con estructuras JSON mediante peticiones HTTP, los datos van a ser recibidos en forma de stream y no como un slice de bytes.
Conforme se recibe el stream, la función json.NewDecoder()
puede ser utilizada, esta recibe como argumento un io.Reader
(retornado por http.Get
) y entrega un Decoder que finalmente recibe la referencia a la estructura sobre la cual se va a decodificar.
Preparamos la estructura.
type Pais struct {
Nombre string
Habitantes int
Capital string
Idiomas []string
}
Creamos la instancia del stream.
var p Pais
Montamos sobre res
el io.Reader
.
res, err := http.Get("url/stream")
if err != nil {
log.Fatal(err)
}
Realizamos la decodificación.
defer res.Body.Close()
err = json.NewDecoder(res.Body).Decode(&p)
if err != nil {
log.Fatal(err)
}