gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:05:55 25 4
gpt4 key购买 nike

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

最佳答案

添加这个:

// 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,而不是使用 json.NewDecoder 和 Decode,而是使用 json.Unmarshal。 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)

希望它有效,没有测试,让我知道!

关于rest - 使用 http.Request 和 Restangular 在 Go 中查看 JSON POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25475198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com