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

一个结构的多个 Json 条目

一个结构的多个 Json 条目

Go
ABOUTYOU 2022-05-10 15:57:14
我有多个 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

}


查看完整回答
反对 回复 2022-05-10
  • 1 回答
  • 0 关注
  • 107 浏览
慕课专栏
更多

添加回答

举报

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