gpt4 book ai didi

json - Golang/gin 从 gin.Context 解析 JSON

转载 作者:IT王子 更新时间:2023-10-29 01:44:40 52 4
gpt4 key购买 nike

我从 gin 文档中了解到,您可以将 json 绑定(bind)到类似

的结构
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"})
}
}
})
}

您总是必须构建一个结构来绑定(bind) JSON。

但是如果有一个非常复杂的 JSON 数据,我只能获取其中的一部分,创建一个复杂的结构是一个很大的负担。能避开id直接解析吗?

最佳答案

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

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

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

关于json - Golang/gin 从 gin.Context 解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45628770/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com