JSON, Uso de JSON en Golang

¿Cómo usar JSON en Go?

Para interactuar con JSON en Golang se echa mano de la librería econding/json.

Supongamos que tenemos una estructura que deseamos codificar.

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

Vamos a crear una instancia de esta estructura correspondiente al país de Canadá.

p := Pais{
    Nombre:     "Canada",
    Habitantes: 37314442,
    Capital:    "Ottawa",
    Idiomas:    []string{"Inglés", "Frances"},
}

Ahora vamos a codificar esta estructura utilizando json.Marshal de la librería encoding/json.

datosJson, err := json.Marshal(p)
if err != nil {
    log.Fatal(err)
}

El programa completo luciría algo así…

package main

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

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

func main() {
    p := Pais{
        Nombre:     "Canada",
        Habitantes: 37314442,
        Capital:    "Ottawa",
        Idiomas:    []string{"Inglés", "Frances"},
    }
    datosJson, err := json.Marshal(p)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(datosJson))
}

Si ejecutamos el programa, podremos ver que la impresión del json es correcta.

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