栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

golang无法解析json怎么办?

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

golang无法解析json怎么办?

golang无法解析json的解决办法:

golang首字母大小写意味着改变了成员的访问权限,小写就变成私有的了,不同package是无法访问其他package的私有成员的,导致json.Marshal(其使用了reflect)无法反射到内容。

打个比方,你如果把json.Marshal(hp)这个方法的重新实现在main方法下面,struct中的成员变量就可以小写了。

注意:

struct内的成员变量小写就只有当前包内可以访问。

Golang HTTP请求Json响应解析方法

响应数据如下:

{"number": 3,"message": "success","people": [{"craft": "ISS","name": "Chris Cassidy"}, {"craft": "ISS","name": "Anatoly Ivanishin"}, {"craft": "ISS","name": "Ivan Vagner"}]}

下面是一个http请求并解析json数据到结构体里的示例

package mainimport ("encoding/json""fmt""io/ioutil""log""net/http""time")type people struct {Number int `json:"number"`}func main() {url := "http://api.open-notify.org/astros.json"spaceClient := http.Client{Timeout: time.Second * 2, // Maximum of 2 secs}req, err := http.NewRequest(http.MethodGet, url, nil)if err != nil {log.Fatal(err)}req.Header.Set("User-Agent", "spacecount-tutorial")res, getErr := spaceClient.Do(req)if getErr != nil {log.Fatal(getErr)}if res.Body != nil {    defer res.Body.Close()}body, readErr := ioutil.ReadAll(res.Body)if readErr != nil {log.Fatal(readErr)}people1 := people{}jsonErr := json.Unmarshal(body, &people1)if jsonErr != nil {log.Fatal(jsonErr)}fmt.Println(people1.Number)}

推荐教程:《go语言教程》

以上就是golang无法解析json怎么办?的详细内容,更多请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/794020.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号