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

我发布以下 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 字符串。


慕无忌1623718
浏览 219回答 2
2回答

小唯快跑啊

添加这个:// You might use lowercase foods since it is maybe not something you want to exporttype Foods struct {   Foods []Food}解码时使用:var foods Foodsdec.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 Foodsjson.Unmarshal(bytes, &foods)希望它有效,没有测试,让我知道!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go