@
1. Unmarshal() 函数
| func Unmarshal(data []byte, v interface{}) error |
说明:
- data: 要解析的字串
- v:接收json字串解析结果的实例,可以是struct、map等等。
2. 示例一(结构体接收json字串解析结果)
| { |
| "project": { |
| "project_name": "BeiFa", |
| "project_num": "A1234567", |
| "project_manger": { |
| "name": "ZhuGeLiang", |
| "number": "000004" |
| }, |
| "project_members": [{ |
| "name": "ZhaoYun", |
| "number": "000008" |
| }, { |
| "name": "WeiYan", |
| "number": "000019" |
| }] |
| } |
| } |
| type projectUser struct { |
| Name string `json:"name"` |
| Number string `json:"number"` |
| } |
| |
| type project struct { |
| ProjectName string `json:"project_name"` |
| ProjectNum string `json:"project_num"` |
| ProjectManger projectUser `json:"project_manger"` |
| ProjectMembers []projectUser `json:"project_members"` |
| } |
| |
| type projects struct { |
| Project project `json:"project"` |
| } |
| package main |
| |
| import ( |
| "encoding/json" |
| "fmt" |
| ) |
| |
| type projectUser struct { |
| Name string `json:"name"` |
| Number string `json:"number"` |
| } |
| |
| type project struct { |
| ProjectName string `json:"project_name"` |
| ProjectNum string `json:"project_num"` |
| ProjectManger projectUser `json:"project_manger"` |
| ProjectMembers []projectUser `json:"project_members"` |
| } |
| |
| type projects struct { |
| Project project `json:"project"` |
| } |
| |
| func main() { |
| var p projects |
| str := ` |
| { |
| "project": { |
| "project_name": "BeiFa", |
| "project_num": "A1234567", |
| "project_manger": { |
| "name": "ZhuGeLiang", |
| "number": "000004" |
| }, |
| "project_members": [{ |
| "name": "ZhaoYun", |
| "number": "000008" |
| }, { |
| "name": "WeiYan", |
| "number": "000019" |
| }] |
| } |
| } |
| ` |
| |
| err := json.Unmarshal([]byte(str), &p) |
| if err != nil { |
| fmt.Println(err) |
| return |
| } |
| |
| fmt.Println(p) |
| fmt.Println(p.Project.ProjectName) |
| fmt.Println(p.Project.ProjectMembers[0]) |
| |
| } |
| {{BeiFa A1234567 {ZhuGeLiang 000004} [{ZhaoYun 000008} {WeiYan 000019}]}} |
| BeiFa |
| {ZhaoYun 000008} |
3.示例二(解析从Get接口得到的json字串)
在 nginx里写一个js文件,内容就用前边的,web访问结果如下:

| package main |
| |
| import ( |
| "encoding/json" |
| "fmt" |
| "io/ioutil" |
| "net/http" |
| ) |
| |
| type projectUser struct { |
| Name string `json:"name"` |
| Number string `json:"number"` |
| } |
| |
| type project struct { |
| ProjectName string `json:"project_name"` |
| ProjectNum string `json:"project_num"` |
| ProjectManger projectUser `json:"project_manger"` |
| ProjectMembers []projectUser `json:"project_members"` |
| } |
| |
| type projects struct { |
| Project project `json:"project"` |
| } |
| |
| func main() { |
| resp, err := http.Get("http://127.0.0.1/index.js") |
| if err != nil { |
| fmt.Println(err) |
| return |
| } |
| |
| body, _ := ioutil.ReadAll(resp.Body) |
| |
| |
| var projects projects |
| |
| _ = json.Unmarshal(body,&projects) |
| fmt.Printf("%+v", projects) |
| fmt.Println(projects.Project.ProjectManger) |
| } |
| {Project:{ProjectName:BeiFa ProjectNum:A1234567 ProjectManger:{Name:ZhuGeLiang Number:000004} ProjectMembers:[{Name:ZhaoYun Number:000008} {Name:WeiYan Number:000019}]}} |
| {ZhuGeLiang 000004} |

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤