Avatar ·

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。提前感谢! <<>>

为什么 json.Marshal() 返回空