• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go接收json数据处理

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

go对json数据进行解码,有两种方式:

client := &http.Client{}
request, err := http.NewRequest("GET", "http://dev.babysleep.com/home/admin/user", nil)
if err != nil {
    log.Fatal(err)
}
response, _ := client.Do(request)

// 方式一:json.Unmarshal()
b, err := ioutil.ReadAll(response.Body)
if err != nil {
    log.Println("err=>", err)
}
data = []byte(string(b))
err = json.Unmarshal(data, &user)
适用场景:如果要处理的JSON数据已经存在内存中,使用json.Unmarshal

// 方式二:json.NewDecoder()
err := json.NewDecoder(response.Body).Decode(&user)
适用场景:如果数据来自io.Reader流,或者需要从数据流中解码多个值,使用json.Decoder
         http请求的读取,也属于流的读取

解码的时候 如果要转为结构体类型,需要注意的点是:要保证json的数据字段与要转化的结构体的字段一致,字段类型一致,如果不一致,需要做一些额外的处理。比如:

// 网站基础导航结构
type Menu struct {
	Id        int                 `json:"id,string"`    // json数据中,id为string类型
	Text      string              `json:"text"`
	Active    bool                `json:"-"`        // json数据中不显示Active字段
	Icon      string              `json:"icon"`
	Href      string              `json:"href"`
	Css       []string            `json:"css,omitempty"`    //omitempty指定如果值为空,可以忽略该值
	PluginCss []string            `json:"pluginCss,omitempty"`
        Js        map[string][]string `json:"js,omitempty"`  
	PluginJs  map[string][]string `json:"pluginJs,omitempty"`
	Children  []Menu              `json:"children,omitempty"`
}

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap