【发布时间】:2020-05-20 18:02:02
【问题描述】:
我使用邮递员发布数据并在正文中放入一些简单的 json
请求正文
{
"order":"1",
"Name":"ts1"
}
我需要将数据传输到 json 并尝试如下, 而且我无法获得 json,不知道缺少什么
router.POST("/user", func(c *gin.Context) {
var f interface{}
//value, _ := c.Request.GetBody()
//fmt.Print(value)
err2 := c.ShouldBindJSON(&f)
if err2 == nil {
err = client.Set("id", f, 0).Err()
if err != nil {
panic(err)
}
}
f 不是 json 并且我得到一个错误,知道如何使它工作吗? 错误是:
redis: can't marshal map[string]interface {} (implement encoding.BinaryMarshaler)
我用https://github.com/go-redis/redis#quickstart
如果我删除正文并使用这样的硬编码代码,我可以设置数据,它可以工作
json, err := json.Marshal(Orders{
order: "1",
Name: "tst",
})
client.Set("id", json, 0).Err()
【问题讨论】:
-
您遇到的错误是什么?
-
错误是什么? “f 不是 json”是什么意思?
-
@CeriseLimón - 请查看我的更新
-
@hmm - 请看我的更新
-
看起来您的目标是将发布的 JSON 文档存储到 Redis。如果是这样,则将 body 放入 []byte 并将 []byte 存储在 Redis 中。不要将 JSON 解码为 Go 值。