登录
首页 >  Golang >  Go问答

绑定 POST 请求正文至地图的方法

来源:stackoverflow

时间:2024-02-27 18:30:20 462浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《绑定 POST 请求正文至地图的方法》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

我一直在使用 gin 的 shouldbind() 方法将表单数据绑定到结构:

type UpdateUserInfoContext struct {
    Country   string `json:"country"`
    EmailAddr string `json:"emailAddr"`
    LoginID   string `json:"loginID"`
    UserName  string `json:"username"`
}

func (h *handler) updateUserInfo(ctx *gin.Context) {

    var json UpdateUserInfoContext

    if err := ctx.ShouldBind(&json); err != nil {
        ctx.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }

    h.service.UpdateUserPassword(json)

    ctx.JSON(http.StatusOK, "success")

}

但现在我需要根据 post 请求正文中存在和不存在的内容构建一个大型动态 update sql。由于 shouldbind() 绑定到一个结构,我无法在不使用反射的情况下迭代主体中的值。我想一个更简单的方法是看看是否有一种方法可以将请求绑定到映射而不是结构。有上下文方法 postformmap(key string),但是据我从此处给出的示例中可以看出(https://github.com/gin-gonic/gin#another-example-query--post-form) ,此方法需要与请求正文中的参数键相对应的值。有人有这样做的经验吗?谢谢!


解决方案


package main

import (
    "fmt"
    "encoding/json"
)

func main() {

    strbody:=[]byte("{\"mic\":\"check\"}")

    mapbody:=make(map[string]string)

    json.Unmarshal(strbody,&mapbody)

    fmt.Println(fmt.Sprint("Is this thing on? ", mapbody["mic"]))

}    
//returns Is this thing on? check

https://play.golang.org/p/ydLuLsY8qla

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

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