Avatar ·

如何在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"`标签的内容,但手动为每个字段添加标签简直是噩梦,尤其是字段很多的时候。有没有办法自动将所有键转换为小写?或者至少如何正确使用标签而不至于抓狂? 请指教,谢谢!