我在Mac OS X 10.8.2上使用Go 1.0.3,并且正在尝试使用该json软件包,试图将结构编组为json,但是我一直得到一个空的{}json对象。
json
{}
该err值是零,所以没有什么根据的是错误的json.Marshal功能,并且该结构是正确的。为什么会这样呢?
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 }
err是nil因为所有的出口领域,在这种情况下有没有,是正确编组。
nil
工作示例:https : //play.golang.org/p/9NH9Bog8_C6
查看文档http://godoc.org/encoding/json/#Marshal