【发布时间】:2019-04-19 10:24:31
【问题描述】:
import "github.com/gin-gonic/gin"
func Receive(c *gin.Context) {
// Gets JSON ecnoded data
rawData, err := c.GetRawData()
if err != nil {
return nil, err
}
logger.Info("Raw data received - ", rawData)
}
当我传递 Json 对象 {"key":"value"} 时,此代码 sn-p 有效,但出现错误:
“JSON 输入意外结束”
当我将[{"key":"val"},{"key": "val"}] 之类的数组作为输入传递时。
【问题讨论】:
-
GetRawData对 json 没有任何作用,它只是读取请求的正文,因此您引用的错误必须来自您尚未共享的代码。 -
我通过 Postman 发送请求,使用正文下的“原始”选项
-
是否设置为
JSON (application/json)? -
@Neville 我想说的是
GetRawData不可能返回错误unexpected end of JSON input(除非您使用的是其他版本的杜松子酒),该错误由encoding/json的解码器,GetRawData从未接触过。因此,您共享的处理程序代码与您遇到的问题无关,错误来自其他地方。无论是 Postman 的问题,还是试图做一些魔术的杜松子酒,还是您可能正在使用的某些中间件,我都不知道GetRawData它是不是。 -
@mkopriva - 抱歉,问题发生在我执行 json.Unmarshall 时。现在解决了。