我有多个 JSON 文件,我想在 API 中进行一次调用。以下是我的结构:type Demo struct { ChannelID int `json:"channelId"` SeriesName string `json:"seriesName"`}我有 5 个 JSON 文件,我需要放入这个结构中,然后传递给 API 调用。我怎么做?这是我的代码:func GetJson(search string) *models.Demo { jsonStruct := models.Demo{} assetIds := DecodeXml(search) for i := 0; i < len(assetIds); i++ { epgData, err := http.Get(assets.EpgUrl + fmt.Sprintf("%v", assetIds[i])) if err != nil { log.Fatal(err) } jsonData, err := ioutil.ReadAll(epgData.Body) if err != nil { log.Fatal(err) } json.Unmarshal(jsonData, &jsonStruct) } return &jsonStruct}对于我的 API 调用,我使用 gin-gonic,代码如下:type Search struct { Search string `form:"search"`}func main() { r := gin.Default() r.GET("/search", func(c *gin.Context) { var search Search if c.ShouldBind(&search) == nil { c.JSON(200, actions.GetJson(search.Search)) } }) r.Run()}有人有想法吗?
1 回答
凤凰求蛊
TA贡献1825条经验 获得超4个赞
您声明一个变量jsonStruct并反复覆盖其值。您应该创建一个Demo值切片并填充切片。
此代码示例使用并返回一个Demo值片段。
func GetJson(search string) []models.Demo {
assetIds := DecodeXml(search)
jsonStructs := make([]models.Demo, len(assetIds))
for i := 0; i < len(assetIds); i++ {
epgData, err := http.Get(assets.EpgUrl + fmt.Sprintf("%v", assetIds[i]))
if err != nil {
log.Fatal(err)
}
jsonData, err := ioutil.ReadAll(epgData.Body)
if err != nil {
log.Fatal(err)
}
epgData.Body.Close()
json.Unmarshal(jsonData, &jsonStructs[i])
}
return jsonStructs
}
- 1 回答
- 0 关注
- 107 浏览
添加回答
举报
0/150
提交
取消