猿问

一个结构的多个 Json 条目

我有多个 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()

}

有人有想法吗?


ABOUTYOU
浏览 108回答 1
1回答

凤凰求蛊

您声明一个变量jsonStruct并反复覆盖其值。您应该创建一个Demo值切片并填充切片。此代码示例使用并返回一个Demo值片段。func GetJson(search string) []models.Demo {&nbsp; &nbsp; assetIds := DecodeXml(search)&nbsp; &nbsp; jsonStructs := make([]models.Demo, len(assetIds))&nbsp; &nbsp; for i := 0; i < len(assetIds); i++ {&nbsp; &nbsp; &nbsp; &nbsp; epgData, err := http.Get(assets.EpgUrl + fmt.Sprintf("%v", assetIds[i]))&nbsp; &nbsp; &nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; log.Fatal(err)&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; jsonData, err := ioutil.ReadAll(epgData.Body)&nbsp; &nbsp; &nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; log.Fatal(err)&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; epgData.Body.Close()&nbsp; &nbsp; &nbsp; &nbsp; json.Unmarshal(jsonData, &jsonStructs[i])&nbsp; &nbsp; }&nbsp; &nbsp; return jsonStructs}
随时随地看视频慕课网APP

相关分类

Go
我要回答