为了账号安全,请及时绑定邮箱和手机立即绑定

使用 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 关注
  • 218 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信