我的结构没有编组到 json [英] My structures are not marshalling into json
问题描述
我在 Mac OS X 10.8.2 上使用 Go 1.0.3,我正在试验 json
包,试图将结构编组为 json,但我一直得到一个空的 {}
json 对象.
I am using Go 1.0.3 on Mac OS X 10.8.2, and I am experimenting with the json
package, trying to marshal a struct to json, but I keep getting an empty {}
json object.
err
值为 nil,所以根据 json.Marshal
函数没有问题,结构正确.为什么会发生这种情况?
The err
value is nil, so nothing is wrong according to the json.Marshal
function, and the struct is correct. Why is this happening?
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("
")
fmt.Println(me) // me is as expected, full of data
}
推荐答案
您必须将要编组的字段设为公开.像这样:
You have to make the fields that you want to marshal public. Like this:
type Address struct {
Street string
Extended string
City string
State string
Zip string
}
err
是 nil
因为所有导出的字段(在本例中没有)都被正确编组.
err
is nil
because all the exported fields, in this case there are none, were marshalled correctly.
工作示例:https://play.golang.org/p/9NH9Bog8_C6
查看文档 http://godoc.org/encoding/json/#Marshal一个>
这篇关于我的结构没有编组到 json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!