Go语言中对结构体进行json.Marshal()一直返回[123 125]即“{}”,原因是go中是否可导出是根据名字首字母是否大写来确定的,如果结构体某字段的首字母为小写则不可导出,例子如下(注意Student内字段首字母的大小写):
不可导出:
type Student struct {
age uint64
name string
}
func main() {
s := &Student{
age: 25,
name: "Cloud",
}
b, _ := json.Marshal(s)
fmt.Println(b)
}
> [123 125]
可导出:
type Student struct {
Age uint64
Name string
}
func main() {
s := &Student{
Age: 25,
Name: "Cloud",
}
b, _ := json.Marshal(s)
fmt.Println(b)
}
> [123 34 65 103 101 34 58 50 53 44 34 78 97 109 101 34 58 34 67 108 111 117 100 34 125]