Avatar ·

从结构中删除字段或在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中它们仍然会出现。 如何正确地隐藏或删除字段?