go接收json数据处理
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"`
}
分类:
Go
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2017-03-17 如何依靠代码提高网络性能