json - 一个结构的多个 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()
}
有人有想法吗?
解决方案
您声明一个变量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
}
推荐阅读
- android - CollapsingToolbarLayout 包含 ViewPager 和一个搜索框。如何防止搜索框仅折叠,而 ViewPager 折叠
- scala - scala 和 dotty 的下限和上限类型
- javascript - JavaScript:打印动态值/数据
- google-cloud-platform - GCP:创建包括运行时进程的 VM 快照
- java - 在用户的 gmail 中更新时,无法更新 firebase 数据库中的数据
- python-3.x - psycopg2 不会将数据保存到 postgres 数据库中
- javascript - 无法使用 JQuery 获取输入字段的值
- amazon-web-services - AWS 为 S3 文件夹级别访问生成动态凭证?
- javascript - d3js连续节点颜色网络 - 无法找出问题
- java - 如何仅使用循环(无数组)找到第二高分