json.Marshal(struct) 返回空 JSON "{}": 如何修复?
大家好!我是 Go 的新手,在处理 JSON 时遇到了一个奇怪的问题。我有一个 struct,填充了数据,尝试使用 `json.Marshal()` 序列化为 JSON,但输出只得到空的花括号 `{}`。这是我的代码:
```go
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string
Age int
}
func main() {
u := User{"Alice", 30}
result, err := json.Marshal(u)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(result)) // 输出:{}
}
```
我期望看到 `{"Name":"Alice","Age":30}`,但只看到了 `{}`。没有错误,但数据丢失了。我哪里做错了?我检查了 struct 已正确填充——通过 `fmt.Println(u.Name, u.Age)` 输出字段时,它们显示正常。问题出在 marshaling 上。请告诉我原因是什么?我在 Windows 上使用 Go 1.21。提前感谢!
<<>>