Como fazer JSON Marshal em Go gerar chaves em minúsculas?
Olá a todos! Estou escrevendo minha primeira API REST em Go e me deparei com um problema: ao serializar uma struct para JSON via `json.Marshal`, todos os campos são gerados com letras maiúsculas, porque em Go campos exportados começam com letra maiúscula. Por exemplo:
```go
type User struct {
Name string
Email string
Age int
}
func main() {
u := User{"Ivan", "ivan@example.com", 30}
data, _ := json.Marshal(u)
fmt.Println(string(data))
// Saída: {"Name":"Ivan","Email":"ivan@example.com","Age":30}
}
```
Mas no frontend (React) todos esperam chaves em camelCase ou snake_case: `name`, `email`, `age`. Tentei escrever meu próprio marshaler, mas é muito complicado para um projeto com 20+ structs.
Li sobre tags `json:"name"`, mas escrevê-las manualmente para cada campo é um inferno, especialmente se houver muitos campos. Existe uma maneira de converter automaticamente todas as chaves para minúsculas? Ou pelo menos como usar as tags corretamente para não enlouquecer?
Por favor, me ajudem!