所以基本上,我试图解析一个 JSON 并将其值分配给一个结构。运行此程序时没有出现任何错误,但返回的 struct yeilds {0 0 0} 不正确。我尝试输入一个假 url 来查看是否只是连接问题,但似乎并非如此。因为 Go 不是异步的,所以按顺序调用应该没有问题,对吧?这是我在某个网站上托管的 JSON{"ability":5335,"time":338,"level":1}这是代码package mainimport ( "encoding/json" "fmt" "io/ioutil" "net/http")type prog struct { ability int64 time int64 level int64}func main() { url := "https://api.myjson.com/bins/2c54h" //get the data from the url res, err := http.Get(url) //error handling defer res.Body.Close() if err != nil { panic(err) } // read json response data, err := ioutil.ReadAll(res.Body) // error handling var jsonData prog err = json.Unmarshal([]byte(data), &jsonData) if err != nil { panic(err) } //test struct data fmt.Println(jsonData)}
3 回答
慕容森
TA贡献1853条经验 获得超18个赞
你几乎拥有它。您只需要更改声明结构的方式以包含大写字母(否则它们将不会被导出)并指定json使用小写名称。
type prog struct {
Ability int64 `json:"ability"`
Time int64 `json:"time"`
Level int64 `json:"level"`
}
月关宝盒
TA贡献1772条经验 获得超5个赞
必须导出结构中的字段(以大写字母开头),JSON 包才能看到它们。
type prog struct {
Ability int64
Time int64
Level int64
}
有关示例,请参见http://play.golang.org/p/yjtth5kliB。
您在 JSON 解析之前下载数据的事实与您看到的内容无关。
- 3 回答
- 0 关注
- 193 浏览
添加回答
举报
0/150
提交
取消