¿Cómo leer un archivo JSON en Go?
Como se menciono anteriormente, un archivo JSON es una forma efectiva de almacenar información, un ejemplo de esto es almacenar configuración.
Una ventaja de declarar la configuración dentro de un archivo, es que dicho archivo de configuración puede ser ignorado del repositorio del proyecto (.gitignore en GIT), de forma que información como credenciales no formen parte de dicho repositorio.
# archivo .gitignore
# ignorar configuración del programa
configuracion.json
Supongamos que tenemos las credenciales en un credenciales.json.
{
"usuario": "luis",
"password": "passwordDeLuis"
}
El programa luciría así.
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
)
type Credenciales struct {
Usuario string `json:"usuario"`
Password string `json:"password"`
}
func main() {
// abrir archivo "configuracion.json"
manejadorDeArchivo, err := ioutil.ReadFile("credenciales.json")
if err != nil {
log.Fatal(err)
}
// preparar contenedor de las credenciales
c := Credenciales{}
// decodificar el contenido del json sobre la estructura
err = json.Unmarshal(manejadorDeArchivo, &c)
if err != nil {
log.Fatal(err)
}
// validar credenciales
if c.Usuario == "luis" && c.Password == "passwordDeLuis" {
fmt.Println("Las credenciales son correctas")
} else {
fmt.Println("Las credenciales son incorrectas")
}
}
Descripción del programa.
- Primero preparamos una estructura para recibir las credenciales.
type Credenciales struct {
Usuario string `json:"usuario"`
Password string `json:"password"`
}
- Leer el contenido del archivo credenciales.json.
manejadorDeArchivo, err := ioutil.ReadFile("credenciales.json")
- Preparar una instancia de la estructura credenciales.
c := Credenciales{}
- Decodificar el contenido json del archivo dentro de la instancia
c
.
err = json.Unmarshal(manejadorDeArchivo, &c)
- Validamos las credenciales.
if c.Usuario == "luis" && c.Password == "passwordDeLuis" {
fmt.Println("Las credenciales son correctas")
} else {
fmt.Println("Las credenciales son incorrectas")
}
Si ejecutamos el programa, podremos comprobar que las credenciales son las correctas.
$ go run main.go
Las credenciales son correctas