Convertir un struct a JSON en Go

Te mostramos un ejemplo de cómo convertir un struct a JSON en Go usando Marshal con el paquete encodig/json. Ya sea que lo necesites como un string para enviar o para almacenar, basta una sola línea. Aquí va el código:

» Ver más ejemplos de Golang

package main

import (
	"encoding/json"
	"fmt"
)

//decodigo.com

type Usuario struct {
	Nombre   string
	Usuario  string
	Password string
	Email    string
}

func main() {
	usuario := &Usuario{Nombre: "Francisco", Usuario: "franz", Password: "123", Email: "correo@prueba.com"}
	usuarioJSON, err := json.Marshal(usuario)
	if err != nil {
		fmt.Printf("Error: %s", err)
		return
	}
	fmt.Println(string(usuarioJSON))
}

En este ejemplo hemos creado un struct llamado Usuario, con campos típicos de ejemplo. Es importante que las variables Nombre, Usuario, Password y Email comiencen con mayúsculas. De lo contrario no serán tomadas en cuenta para la conversión. Esta es la manera que decimos en Go que una variable puede ser usada fuera del paquete en la que fue declarada o puede ser exportada.

Otra cosa que puedes agregar es el nombre que deberá tener para la conversión o el nombre como un campo de JSON, esto lo hacemos agregando una cadena de descripción después de la declaración, modificamos el ejemplo:

package main

import (
	"encoding/json"
	"fmt"
)

//decodigo.com

type Usuario struct {
	Nombre   string `json:"nombre"`
	Usuario  string `json:"usuario"`
	Password string `json:"password"`
	Email    string `json:"email"`
}

func main() {
	usuario := &Usuario{Nombre: "Francisco", Usuario: "franz", Password: "123", Email: "correo@prueba.com"}
	usuarioJSON, err := json.Marshal(usuario)
	if err != nil {
		fmt.Printf("Error: %s", err)
		return
	}
	fmt.Println(string(usuarioJSON))
}

Se usan las comillas simples para declarar que se trata de un campo JSON seguido de dos puntos y entre comillas dobles, el nombre que será que tendrá después de la conversión, que puede ser totalmente diferente:

type Usuario struct {
	Nombre   string `json:"nombre"`
	Usuario  string `json:"usuario"`
	Password string `json:"password"`
	Email    string `json:"email"`
}

El resultado en consola será algo como esto:

Convertir un struct a JSON en Go

No es complicado convertir un struct a JSON en Go, esperamos que este ejemplo te sirva.

Ver más documentación: https://pkg.go.dev/encoding/json@go1.17

Más información en inglés: https://geekole.com/convert-a-struct-to-json-in-golang/