Go 切片转 JSON 为空,为什么?
这个问题涉及到 go 语言中将结构体切片转换为 json 对象时遇到的空数组问题。
在给出的代码中,问题在于结构体 user 的成员名称为小写字母开头。在 go 中,只有大写开头的字段才能被 json 序列化。因此,当将 all 切片序列化为 json 时,由于 all 切片中的结构体成员名称都是小写开头,因此 json 中只会出现空对象。
要解决这个问题,需要将 user 结构体的成员名称改成大写开头,或通过使用 struct tag 为小写开头的字段指定对应的 json 字段名称。
修改后的代码如下:
type User struct { Name string // 大写导出的成员才可以在 json 里出现,小写开始的不可以。 Sfz string `json:"sfz"` // 如果希望在 json 里使用跟成员不一样的名称(比如希望用小写开始),可以加 struct tag }