猿问

如何使用 NewDecode、Golang 和 req *http.Request

来自 PHP 我在这里是一个完全的 Golang 新手。我读了一个与我的非常相似的问题,但我的实现略有偏差。每当我使用以下代码进行解码时,变量 msg.Username 始终为空。Golang 不会在这里抛出错误,所以我知道我在这里遗漏了一些非常小的非常重要的东西,但我不知道它可能是什么。我会非常感谢任何帮助,当然我希望这是一个拳头到额头的顿悟。谢谢!


//The JSON I'm posting to my local server is  

//{"company_domain":"example.com", "user_name":"testu","password":"testpw"}


func Login(w http.ResponseWriter, req *http.Request) {

  type Message struct {

      CompanyDomain string

      Username      string

      Password      string

  }

  //decode

  var msg Message

  decoder := json.NewDecoder(req.Body)

  err := decoder.Decode(&msg)

  if err != nil {

      err.Error())

  }

  w.Write([]byte(msg.Username))// <- This print statement always comes in blank 

  authorize, err := models.VerifyAuth(msg.Username, msg.Password, msg.CompanyDomain, w)

  if err != nil {

      err.Error())

  }

  ...


慕慕森
浏览 137回答 2
2回答

牧羊人nacy

标记您的结构字段,以便解码器知道如何将 json 键映射到您的结构。type Message struct {&nbsp; &nbsp; CompanyDomain string `json:"company_domain"`&nbsp; &nbsp; Username&nbsp; &nbsp; &nbsp; string `json:"user_name"`&nbsp; &nbsp; Password&nbsp; &nbsp; &nbsp; string `json:"password"`}

LEATH

你只需要添加json:"field_name"到你的结构中:type Message struct {&nbsp; &nbsp; CompanyDomain string `json:"company_domain"`&nbsp; &nbsp; Username&nbsp; &nbsp; &nbsp; string `json:"user_name"`&nbsp; &nbsp; Password&nbsp; &nbsp; &nbsp; string `json:"password"`}
随时随地看视频慕课网APP

相关分类

Go
我要回答