Golang 结构体、map、切片的序列化
1.结构体序列化
package main import ( "encoding/json" "fmt" ) //定义一个结构体 type Monster struct { Name string Age int Birthday string Sal float64 skill string } func testStruct(){ monster := Monster{ Name : "牛魔王", Age : 500, Birthday : "2021-11-11", Sal : 80000.0, skill : "牛魔拳", } //将monster 序列化 data, err :=json.Marshal(&monster) if err !=nil{ fmt.Printf("序列化错误 err=%v\n",err) } //输出序列化结果 fmt.Printf("manster序列化后=%v",string(data)) } func main(){ //演示结构体序列化 testStruct() }
2.map序列化
package main import ( "encoding/json" "fmt" ) //将map进行序列化 func testMap() { //定义一个Map var a map[string]interface{} //使用map,需要make a = make(map[string]interface{}) a["name"] = "红孩儿" a["age"] = 30 a["address"] = "火云洞" //将a这个map进行序列化 data, err := json.Marshal(a) if err != nil { fmt.Printf("序列化错误 err=%v", err) } //输出序列化后的结果 fmt.Printf("monster序列化后=%v\n", string(data)) } func main() { //演示map序列化 testMap() }
3.slice切片序列化
package main import ( "encoding/json" "fmt" ) //对切片进行序列化,我们这个切片 []map[string]interface{} func testSlice() { var slice []map[string]interface{} var m1 map[string]interface{} //使用map前需要make m1 = make(map[string]interface{}) m1["name"] = "jack" m1["age"] = "7" m1["address"] = "北京" slice = append(slice, m1) var m2 map[string]interface{} //使用map前需要make m2 = make(map[string]interface{}) m2["name"] = "tom" m2["age"] = "20" m2["address"] = "上海" slice = append(slice, m2) data, err := json.Marshal(slice) if err != nil { fmt.Printf("序列化错误 err=%v", err) } //输出序列化后的结果 fmt.Printf("slice序列化后的结果=%v\n", string(data)) } func main() { testSlice() }
4.结构体序列化得tag标签
定义结构体的属性是大写的字母,但有些时候序列化后需要是小写的,这时候不能修改结构体的属性为小写,因为在序列化的操作是挎包操作,小写字母不是可导出的。利用 tag标签解决此问题.
正常情况下,你定义的结构体是这样子的,每个字段都由名字和字段类型组成
//定义一个结构体 type Monster struct { Name string Age int Birthday string Sal float64 skill string }
用反引号(Esc键下面的那个键)包含的字符串,称之为 Tag,也就是标签。
//定义一个结构体 type Monster struct { Name string `json:"monster_name"` Age int `json:"monster_age"` Birthday string Sal float64 skill string }
【推荐】国内首个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框架的用法!