首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Golang/gin从gin.Context解析JSON

Golang/gin从gin.Context解析JSON
EN

Stack Overflow用户
提问于 2017-08-11 14:53:45
回答 1查看 17.2K关注 0票数 5

我从gin文档中了解到可以将json绑定到像这样的结构

代码语言:javascript
复制
type Login struct {
    User     string `form:"user" json:"user" binding:"required"`
    Password string `form:"password" json:"password" binding:"required"`
}

func main() {
    router := gin.Default()

    // Example for binding JSON ({"user": "manu", "password": "123"})
    router.POST("/loginJSON", func(c *gin.Context) {
        var json Login
        if c.BindJSON(&json) == nil {
            if json.User == "manu" && json.Password == "123" {
                c.JSON(http.StatusOK, gin.H{"status": "you are logged in"})
            } else {
                c.JSON(http.StatusUnauthorized, gin.H{"status": "unauthorized"})
            }
        }
    })
}

您总是需要构建一个结构来绑定JSON。

但是如果有一个非常复杂的JSON数据,我只能得到它的一部分,创建一个复杂的结构是一个很大的负担。可以避免id并直接解析它吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-11 16:41:08

您不需要为JSON响应中存在的所有字段创建结构,只需要为您感兴趣的字段创建结构。解组时,响应中存在的任何其他字段都将被忽略。

您也可以解组为通用map[string]interface{},但这只对真正的动态数据有用。如果您提前知道响应的格式,那么在访问map时,最好创建一个自定义结构来确保类型安全,并避免连续的nil检查。此外,在解组JSON时,目标结构可以避免存储不必要的值。

您可以使用JSON to Go工具帮助从JSON响应快速创建结构定义。然后,您可以轻松地删除所有不需要的字段。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45628770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档