No JSON in sight
yourbasic.org/golang

Why does json.Marshal produce empty structs in the JSON text output?
type Person struct { name string age int } p := Person{"Alice", 22} jsonData, _ := json.Marshal(p) fmt.Println(string(jsonData)) {} Answer
Only exported fields of a Go struct will be present in the JSON output.
type Person struct { Name string // Changed to capital N Age int // Changed to capital A } p := Person{"Alice", 22} jsonData, _ := json.Marshal(p) fmt.Println(string(jsonData)) {"Name":"Alice","Age":22} You can specify the JSON field name explicitly with a json: tag.
type Person struct { Name string `json:"name"` Age int `json:"age"` } p := Person{"Alice", 22} jsonData, _ := json.Marshal(p) fmt.Println(string(jsonData)) {"name":"Alice","age":22} See JSON by example for an extensive guide to the Go JSON library.