为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中解析远程 json

在 Go 中解析远程 json

Go
GCT1015 2021-12-07 10:24:14
所以基本上,我试图解析一个 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贡献1776条经验 获得超12个赞

重命名结构的字段,以便它们以大写字母开头,并且它应该可以工作。

如有必要,还可以使用反引号在每个字段名称的末尾附加一个提示。


查看完整回答
反对 回复 2021-12-07
?
慕容森

TA贡献1853条经验 获得超18个赞

你几乎拥有它。您只需要更改声明结构的方式以包含大写字母(否则它们将不会被导出)并指定json使用小写名称。


type prog struct {

    Ability int64 `json:"ability"`

    Time    int64 `json:"time"`

    Level   int64 `json:"level"`

}


查看完整回答
反对 回复 2021-12-07
?
月关宝盒

TA贡献1772条经验 获得超5个赞

必须导出结构中的字段(以大写字母开头),JSON 包才能看到它们。


type prog struct {

    Ability int64

    Time    int64

    Level   int64

}

有关示例,请参见http://play.golang.org/p/yjtth5kliB。


您在 JSON 解析之前下载数据的事实与您看到的内容无关。


查看完整回答
反对 回复 2021-12-07
  • 3 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信