首页 > 解决方案 > 杜松子酒框架可以获取像`map[string]interface{}`这样的json post数据而不是与struct绑定吗?

问题描述

正如标题所说,我正在编写一个 API,获取客户端发布的任何 json 数据。
有什么方法可以直接获取map[string]interface{}类型数据bson.M吗?

我试过简单地查找 的属性gin.Context,如果我错过了什么,它们中的任何一个都会有帮助吗?

标签: gogo-gin

解决方案


  1. 直接[]bytes从请求体中 获取
  2. 用于json.Unmarshal()转换[]bytes成类似 JSON 的数据:map[string]interface{}
func GetJsonData(c *gin.Context) {
    data, _ := ioutil.ReadAll(c.Request.Body)
    fmt.Println(string(data))

    var jsonData bson.M  // map[string]interface{}
    data, _ := ioutil.ReadAll(c.Request.Body)
    if e := json.Unmarshal(data, &jsonData); e != nil {
        c.JSON(http.StatusBadRequest, gin.H{"msg": e.Error()})
        return
    }
    c.JSON(http.StatusOK, jsonData)
}

推荐阅读