我的结构不是编组成json

我在Mac OS X 10.8.2上使用Go 1.0.3,我正在尝试使用json软件包,试图将一个结构编组为json,但我一直得到一个空的{} json对象。

err值是零,所以根据json.Marshal函数没有什么错,结构是正确的。 为什么发生这种情况?

 package main import ( "encoding/json" "fmt" ) type Address struct { street string extended string city string state string zip string } type Name struct { first string middle string last string } type Person struct { name Name age int address Address phone string } func main() { myname := Name{"Alfred", "H", "Eigenface"} myaddr := Address{"42 Place Rd", "Unit 2i", "Placeton", "ST", "00921"} me := Person{myname, 24, myaddr, "000 555-0001"} b, err := json.Marshal(me) if err != nil { fmt.Println(err) } fmt.Println(string(b)) // err is nil, but b is empty, why? fmt.Println("\n") fmt.Println(me) // me is as expected, full of data } 

你必须使你想要公开的领域。 喜欢这个:

 type Address struct { Street string Extended string City string State string Zip string } 

errnil因为所有导出的字段,在这种情况下都没有,被正确编组。

工作示例: http : //play.golang.org/p/0Q8TIvZwuj

查看文档http://godoc.org/encoding/json/#Marshal

请注意,您还可以通过执行以下操作来处理生成的JSON中字段的名称:

 type Name struct { First string `json:"firstname"` Middle string `json:"middlename"` Last string `json:"lastname"` }