go - 杜松子酒框架可以获取像`map[string]interface{}`这样的json post数据而不是与struct绑定吗?
问题描述
正如标题所说,我正在编写一个 API,获取客户端发布的任何 json 数据。
有什么方法可以直接获取map[string]interface{}
类型数据bson.M
吗?
我试过简单地查找 的属性gin.Context
,如果我错过了什么,它们中的任何一个都会有帮助吗?
解决方案
- 直接
[]bytes
从请求体中 获取 - 用于
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)
}
推荐阅读
- java - 如何仅从所需的类(流)中获取数据?
- html - 如何在背景不透明度为 0.6 的元素上设置文本?
- docker - 全局模式下的 Docker swarm 在更新时使某些服务的副本过多
- sql - 如何将 TIMESTAMP_TRUNC(started_at, month) 输出为字符串,例如“JAN”
- python - Cython 的问题:导入时未找到已编译的模块
- javascript - 如何根据使用 ReactJS 和 Axios 单击的按钮将用户 onClick 事件发送到不同的端点 url
- javascript - React Hooks Onchange 同步
- python-3.x - 在 python asyncio 中生成新的异步任务之前等待 getter 结果
- r - R - 每列整个数据帧的百分比
- perl - 编程语言问题,过程语言,动态范围