亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 http.Request 和 Restangular 在 Go 中查看 JSON POST

使用 http.Request 和 Restangular 在 Go 中查看 JSON POST

Go
慕無忌1623718 2021-08-10 17:15:46
我發布以下 json 字符串:{'foods':[{'vName':'bean','color':'green','size':'small'},            {'vName':'carrot','color':'orange', 'size':'medium'}]}我正在使用 Restangular 發布到 Go,接收函數是:func CreateFoods(w http.ResponseWriter, r *http.Request) {   defer r.Body.Close()   var food Food //this needs to be an array or something?   dec := json.NewDecoder(r.Body)   dec.Decode(&food)}我的食物結構:type Food struct{  VName string `json:"vName"`  Color string `json:"color"`  Size string `json:"size"`}我在發布單個實體的情況下使用了這個例程,但現在我想發布多個實體,但我無法弄清楚如何將此 json 示例映射到多個實體。另外,我正在嘗試“查看”JSON POST,查看 JSON 字符串,然后如果必須的話,我可以使用該字符串來創建實體。我不知道如何從 http.Request 獲取 JSON 字符串。
查看完整描述

2 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

添加這個:


// You might use lowercase foods since it is maybe not something you want to export

type Foods struct { 

  Foods []Food

}

解碼時使用:


var foods Foods

dec.Decode(&foods)

以字符串形式查看響應正文:


bytes, err := ioutil.ReadAll(r.Body)

fmt.Println(string(bytes))

小細節:在最后兩行之后,您現在可以閱讀正文內容。然后,您應該不使用 json.NewDecoder 和 Decode 而是使用 json.Unmarshal 來解碼 json。CreateFoods() 的完整示例以防止混淆:


bytes, err := ioutil.ReadAll(r.Body)

if err != nil {

  fmt.Println("error reading body")

  return

}

fmt.Println(string(bytes))

var foods Foods

json.Unmarshal(bytes, &foods)

希望它有效,沒有測試,讓我知道!


查看完整回答
反對 回復 2021-08-10
  • 2 回答
  • 0 關注
  • 246 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號