Golang Struct是一个Json对象数组



我有点困惑,为什么我的方法不工作。我想要完成的是从返回json格式的api调用中获取ID。然后,我需要随后通过传入该id来执行另一个调用,以获取该调用中的所有内容的值下面你会看到我的方法和我正在玩的大致布局。

res, err := http.Get("xyz")
if err != nil {
log.Fatalln(err)
}
defer res.Body.Close()
var publications []Publications
body, err := ioutil.ReadAll(res.Body)
if err != nil {
log.Fatalln(err)
}
json.Unmarshal(body, &publications)
fmt.Println((publications))

我目前有一个Json数组类似于这个第一个api调用

[
{
"id": 12101,
"location":"SD",
"name": "Joe",
"date": "2022-04-21T00:00:00-04:00",
},
{
"id": 141201,
"location": "NY",
"name": "Sky",
"date": "2022-04-21T00:00:00-04:00",
},
]

这个例子展示了如何将你的第一个JSON数组解析成一个结构体。

在操场上玩。

package main
import (
"encoding/json"
"fmt"
"time"
)
type payload []entry
type entry struct {
Id       int       `json:"id"`
Location string    `json:"location"`
Name     string    `json:"name"`
Date     time.Time `json:"date"`
}
func main() {
str := `
[
{
"id": 12101,
"location":"SD",
"name": "Joe",
"date": "2022-04-21T00:00:00-04:00"
},
{
"id": 141201,
"location": "NY",
"name": "Sky",
"date": "2022-04-21T00:00:00-04:00"
}
]
`
var publication1 payload
err := json.Unmarshal([]byte(str), &publication1)
if err != nil {
fmt.Printf("error: %vn", err)
}
for _, p := range publication1 {
fmt.Printf("id = %dn", p.Id)
}
}

输出:

id = 12101
id = 141201

最新更新