Golang json的反序列化
介绍
json反序列化是指将json字符串反序列化成对应的数据类型(比如结构体、map、切片)的操作
1.反序列换结构体
package main import ( "encoding/json" "fmt" ) //定义一个结构体 type Monster struct { Name string Age int Birthday string Sal float64 Skill string } //将json字符串反序列化成struct func unmarshalStruct() { str := "{\"Name\":\"牛魔王\",\"Age\":500,\"Birthday\":\"2021-11-11\",\"Sal\":80000,\"Skill\":\"牛魔拳\"}" //定义一个Monster结构体的实例 var monster Monster err := json.Unmarshal([]byte(str), &monster) if err != nil { fmt.Printf("unmarshal err=%v", err) } fmt.Printf("反序列化后 monster=%v", monster) } func main() { //演示结构体反序列化 unmarshalStruct() }
2.反序列化Map
package main import ( "encoding/json" "fmt" ) //将json反序列化成map func unmarshalMap() { str := "{\"address\":\"洪崖洞\",\"age\":30,\"name\":\"红孩儿\"}" //定义一个map var a map[string]interface{} //反序列化 //注意:反序列化map,不需要make,因为make操作被封装到Unmarshal函数 err := json.Unmarshal([]byte(str), &a) if err != nil { fmt.Printf("unmarshal err=%v\n", err) } fmt.Printf("反序列化后 a=%v\n", a) } func main() { unmarshalMap() }
3.反序列化slice
package main import ( "encoding/json" "fmt" ) //将json反序列化成切片 func unmarshalSlice() { str := "[{\"address\":\"beijiang\",\"age\":7,\"name\":\"jack\"},{\"address\":[\"shanghai\",\"xiaweiyi\"],\"age\":20,\"name\":\"tom\"}]" //定义一个slice var slice []map[string]interface{} //反序列化,不需要make,因为make操作被封装到Unmarshal函数 err := json.Unmarshal([]byte(str), &slice) if err != nil { fmt.Printf("unmarshal err=%v\n", err) } fmt.Printf("反序列化后 slice=%v\n", slice) } func main() { unmarshalSlice() }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!