我正在将JSON用户对象发布到我的Golang应用程序中,在其中我将“ req.body”解码为“ User”结构。
err := json.NewDecoder(req.Body).Decode(user) //handle err if there is one
和“用户”结构:
type User struct { Name string `json:"name,omitempty"` Username string `json:"username,omitempty"` Email string `json:"email,omitempty"` Town string `json:"town,omitempty"` //more fields here }
虽然我不需要实际验证方面的帮助,但我想知道如何仅在用户名作为JSON对象的一部分包含时验证用户名。目前,如果不包含用户名,则该用户名User.Username仍然存在,但为空,即""
User.Username
""
如何检查是否已将“用户名”作为POSTed对象的一部分?
您可以使用指向字符串的指针:
type User struct { Name string `json:"name,omitempty"` Username *string `json:"username,omitempty"` Email string `json:"email,omitempty"` Town string `json:"town,omitempty"` //more fields here } func main() { var u, u2 User json.Unmarshal([]byte(`{"username":"hi"}`), &u) fmt.Println("username set:", u.Username != nil, *u.Username) json.Unmarshal([]byte(`{}`), &u2) fmt.Println("username set:", u2.Username != nil) fmt.Println("Hello, playground") }
playground