如何在Go中让JSON Marshal输出小写键?
大家好!我正在用Go编写我的第一个REST API,遇到了一个问题:通过`json.Marshal`将结构体序列化为JSON时,所有字段都以大写字母开头输出,因为Go中可导出的字段以大写字母开头。例如:
```go
type User struct {
Name string
Email string
Age int
}
func main() {
u := User{"伊万", "ivan@example.com", 30}
data, _ := json.Marshal(u)
fmt.Println(string(data))
// 输出:{"Name":"伊万","Email":"ivan@example.com","Age":30}
}
```
但前端(React)期望键是camelCase或snake_case格式:`name`、`email`、`age`。我尝试过编写自己的marshaler,但对于一个有20多个结构体的项目来说太繁琐了。
我读过关于`json:"name"`标签的内容,但手动为每个字段添加标签简直是噩梦,尤其是字段很多的时候。有没有办法自动将所有键转换为小写?或者至少如何正确使用标签而不至于抓狂?
请指教,谢谢!