我的客户端 javascript 将此 JSON 发布到服务器端:{ username: 'hello', password: 'world' }我的 Go 服务器端代码:type AuthJSON struct { Username string `json:"username"` Password string `json:"password"`}func AuthenticationHandler(w http.ResponseWriter, r *http.Request) { // Parse the incoming user/pass from the request body var body AuthJSON err := json.NewDecoder(r.Body).Decode(&body) log.Println(body) log.Println(body.Username) if err != nil { log.Println(err) panic(err) } ...}我的终端如下所示:2013/07/31 20:26:53 { }2013/07/31 20:26:53 2013/07/31 20:26:53 invalid character 'u' looking for beginning of value2013/07/31 20:26:53 http: panic serving [::1]:58141: invalid character 'u' looking for beginning of valuegoroutine 9 [running]:net/http.func·007()...显然,我的 JSON 解析有问题,我收到一个错误,并调用了 panic(err)。无效字符 'u' 来自我的 JSON 中的用户名部分。我已经用 Node 服务器测试了客户端,效果很好。Go 非常新。任何帮助都会很棒。
3 回答
扬帆大鱼
TA贡献1799条经验 获得超9个赞
您不是在 JSON 中发送数据。这就是你的 Go 服务器无法读取的原因。使用这样的东西:
$.ajax({
url: '/api/auth.json',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(data)
// you can add callbacks as “complete”, “success”, etc.
});
我必须补充一点,我不是 jQuery 专家,因此可能有捷径。
慕少森
TA贡献2019条经验 获得超9个赞
尝试通过 POSTMAN 发出请求时,我遇到了同样的问题。将正文数据类型更改为raw
并按json
格式添加数据,然后它将正常工作,标题也必须是application/json
- 3 回答
- 0 关注
- 207 浏览
添加回答
举报
0/150
提交
取消