所以我试图从具有这种格式的 JSON 中获取鸽子的数量。这个 JSON 包含很多鸟类类型,每一种都由他的颜色和最后联系方式定义:{ "url": "http://localhost:9001/", "pigeons": [ { "color": "white", "lastContact": "2020-03-23T14:46:20.806Z" }, { "color": "grey", "lastContact": "2020-03-23T14:46:20.807Z" } ], "parrots": [ { "color": "green", "lastContact": "2020-03-23T14:46:20.806Z" } ]}已经做了这段从 API 获取 JSON 的代码,但是由于我没有任何 Go 经验,你们能帮我从这里数一下鸽子的数量吗?我真的不在乎其他鸟类的数量。package mainimport ( "encoding/json" "fmt" "io/ioutil" "log" "net/http" "time")type pigeons struct { Number int `json:"something"`}func main() { url := "http://localhost:9001" birdsClient := http.Client{ Timeout: time.Second * 2, // Maximum of 2 secs } req, err := http.NewRequest(http.MethodGet, url, nil) if err != nil { log.Fatal(err) } res, getErr := birdsClient.Do(req) if getErr != nil { log.Fatal(getErr) } body, readErr := ioutil.ReadAll(res.Body) if readErr != nil { log.Fatal(readErr) } pigeons1 := pigeons{} jsonErr := json.Unmarshal(body, &pigeons1) if jsonErr != nil { log.Fatal(jsonErr) } fmt.Println(pigeons1.Number)}
1 回答
万千封印
TA贡献1891条经验 获得超3个赞
在返回的 JSON 文档中,pigeons是一个数组,看起来该数组的长度是鸽子的数量。因此,如果您将其解组为一个接受鸽子数组的结构,您可以获得它的长度:
type pigeons struct {
Pigeons []interface{} `json:"pigeons"`
}
上面,您可以将pigeons字段解组为接口数组,因为您不关心字段的内容。如果您需要处理内容,则需要一个单独的结构并使用它的数组。然后:
var p pigeons
json.Unmarshal(body, &p)
fmt.Printf("%d",len(p.Pigeons))
- 1 回答
- 0 关注
- 59 浏览
添加回答
举报
0/150
提交
取消