从结构中删除字段或在Go的JSON响应中隐藏它们
大家好!我是Go新手,遇到了一个问题。我有一个User结构体,用于在数据库中存储用户数据,并通过REST API发送JSON响应。
```go
type User struct {
ID int `json:"id"`
Username string `json:"username"`
Email string `json:"email"`
Password string `json:"password"`
Role string `json:"role"`
}
```
当我以JSON格式返回用户时(例如注册后),我不想发送Password字段,可能还有Role字段(对于普通用户)。但我不想为每种情况创建单独的结构体——这会导致代码重复。
我尝试过对Password字段使用`json:"-"`,但这样它永远不会包含在JSON中,而我需要在某些场景下(例如管理员)在响应中包含它。我也尝试过将字段设为空字符串或零值,但在JSON中它们仍然会出现。
如何正确地隐藏或删除字段?