我发布以下 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)
希望它有效,没有测试,让我知道!
- 2 回答
- 0 关注
- 218 浏览
添加回答
举报
0/150
提交
取消