登录
首页 >  Golang >  Go问答

验证结构字段是否存在

来源:Golang技术栈

时间:2023-04-13 19:06:38 499浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《验证结构字段是否存在》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我将一个 JSON 用户对象发布到我的 Golang 应用程序,在其中我将“req.body”解码为“用户”结构。

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仍然存在但为空,即""

如何检查“用户名”是否包含在 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

今天关于《验证结构字段是否存在》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>