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:
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:
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/