Estoy tratando de convertir una estructura Go a JSON usando el json
paquete, pero todo lo que obtengo es {}
. Estoy seguro de que es algo totalmente obvio, pero no lo veo.
package main
import (
"fmt"
"encoding/json"
)
type User struct {
name string
}
func main() {
user := &User{name:"Frank"}
b, err := json.Marshal(user)
if err != nil {
fmt.Printf("Error: %s", err)
return;
}
fmt.Println(string(b))
}
Luego, cuando trato de ejecutarlo, obtengo esto:
$ 6g test.go && 6l -o test test.6 && ./test
{}
`json:"name"`
al final de la definición del campo de estructura para preservar el nombre de salida.Asunto relacionado:
Estaba teniendo problemas para convertir la estructura a JSON, enviándola como respuesta de Golang, luego, luego capté lo mismo en JavaScript a través de Ajax.
Perdí mucho tiempo, así que publiqué una solución aquí.
En Go:
En JavaScript:
Espero que esto ayude a alguien.
La mejor de las suertes.
fuente
Los valores de estructura se codifican como objetos JSON. Cada campo de estructura exportado se convierte en un miembro del objeto a menos que:
Los valores vacíos son falso, 0, cualquier puntero nulo o valor de interfaz, y cualquier matriz, segmento, mapa o cadena de longitud cero. La cadena de clave predeterminada del objeto es el nombre del campo de estructura, pero se puede especificar en el valor de etiqueta del campo de estructura. La clave "json" en el valor de la etiqueta del campo de estructura es el nombre de la clave, seguido de una coma y opciones opcionales.
fuente
Puede definir sus propios métodos personalizados MarshalJSON y UnmarshalJSON y controlar intencionalmente lo que debe incluirse, por ejemplo:
fuente