如果http响应的格式不是直接的对象列表,那么我可以弄清楚如何将它们转换为结构的唯一方法是创建两个结构来匹配响应的确切格式。无论如何,我可以在其中创建一个 Product 结构而不需要创建 ProductRes 包装器结构吗?
下面是我调用的 api 响应的示例:
{
"items": [
{
"name": "Product 1",
"price": 20.45
},
{
"name": "Product 2",
"price": 31.24
}
]
}
这是我创建的两个结构,用于将 api 响应转换为 Product 切片:
type Product struct {
Name string `json:"name"`
Price float64 `json:"price"`
}
type ProductRes struct {
Items []Product `json:"items"`
}
以下是发出 api 请求并将响应转换为 Product 切片的部分代码:
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
log.Fatalln(err)
}
resp, err := c.client.Do(req)
if err != nil {
log.Fatalln(err)
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatalln(err)
}
products := ProductRes{}
// This line makes me think I actually do need multiple structs, unless I can modify body somehow prior to sending it in here
json.Unmarshal(body, &products)
POPMUISE
哆啦的时光机
随时随地看视频慕课网APP
相关分类