我在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
}
Run Code Online (Sandbox Code Playgroud)
luk*_*kad 40
你必须制作你想要公开的领域.像这样:
type Address struct {
Street string
Extended string
City string
State string
Zip string
}
Run Code Online (Sandbox Code Playgroud)
err是nil因为所有导出的字段(在这种情况下都没有)被正确编组.
工作示例:https://play.golang.org/p/9NH9Bog8_C6
查看文档http://godoc.org/encoding/json/#Marshal
请注意,您还可以通过执行以下操作来操作生成的JSON中的字段名称:
type Name struct {
First string `json:"firstname"`
Middle string `json:"middlename"`
Last string `json:"lastname"`
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1504 次 |
| 最近记录: |