猿问

在 Go 中处理 JSON Post 请求 - 错误

我的客户端 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 value

2013/07/31 20:26:53 http: panic serving [::1]:58141: invalid character 'u' looking for beginning of value

goroutine 9 [running]:

net/http.func·007()

...

显然,我的 JSON 解析有问题,我收到一个错误,并调用了 panic(err)。


无效字符 'u' 来自我的 JSON 中的用户名部分。


我已经用 Node 服务器测试了客户端,效果很好。Go 非常新。任何帮助都会很棒。


守候你守候我
浏览 208回答 3
3回答

扬帆大鱼

您不是在 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 专家,因此可能有捷径。

慕少森

尝试通过 POSTMAN 发出请求时,我遇到了同样的问题。将正文数据类型更改为raw并按json格式添加数据,然后它将正常工作,标题也必须是application/json
随时随地看视频慕课网APP

相关分类

Go
我要回答