Несколько Json записей в одну структуру - PullRequest
0 голосов
/ 28 января 2020

У меня есть несколько 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-goni c со следующим кодом:

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 Ответ

0 голосов
/ 28 января 2020

Вы объявляете одну переменную 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...