Conversión de Ir struct a JSON

Estoy tratando de convertir una estructura de Go a JSON utilizando el paquete json 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 bash ejecutarlo, obtengo esto:

 $ 6g test.go && 6l -o test test.6 && ./test {} 

User.name exportar el campo User.name para que el paquete json pueda verlo. Cambie el name campo de name a Name .

 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.Println(err) return } fmt.Println(string(b)) } 

Salida:

 {"Name":"Frank"} 

Asunto relacionado:

Estaba teniendo problemas para convertir struct a JSON, enviándolo como respuesta desde Golang, luego, luego capté el mismo en JavaScript a través de Ajax.

Perdió un montón de tiempo, por lo que la solución de publicación aquí.

En Go:

 // web server type Foo struct { Number int `json:"number"` Title string `json:"title"` } foo_marshalled, err := json.Marshal(Foo{Number: 1, Title: "test"}) fmt.Fprint(w, string(foo_marshalled)) // write response to ResponseWriter (w) 

En JavaScript:

 // web call & receive in "data", thru Ajax/ other var Foo = JSON.parse(data); console.log("number: " + Foo.number); console.log("title: " + Foo.title); 

Espero que esto ayude a alguien.
La mejor de las suertes.

Los valores de Struct codifican como objetos JSON. Cada campo de estructura exportado se convierte en miembro del objeto a menos que:

  • la etiqueta del campo es “-“, o
  • el campo está vacío y su etiqueta especifica la opción “omitempty”.

Los valores vacíos son falso, 0, cualquier puntero nulo o valor de interfaz, y
cualquier matriz, sector, mapa o cadena de longitud cero. El valor predeterminado del objeto
cadena clave es el nombre del campo struct, pero se puede especificar en la estructura
valor de etiqueta del campo. La clave “json” en el valor de etiqueta del campo struct es
nombre de la clave, seguido de una coma opcional y opciones.