Golang中Json的序列化和反序列化怎么使用
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章主要介绍"Golang中Json的序列化和反序列化怎么使用",在日常操作中,相信很多人在Golang中Json的序列化和反序列化怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
千家信息网最后更新 2025年11月11日Golang中Json的序列化和反序列化怎么使用
这篇文章主要介绍"Golang中Json的序列化和反序列化怎么使用",在日常操作中,相信很多人在Golang中Json的序列化和反序列化怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Golang中Json的序列化和反序列化怎么使用"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
JSON:
JSON(JavaScript Object Notation):是一种轻量级的数据交换格式。 它是基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于计算机解析和生成,并有效的 提升网络传输效率。
Json易于机器解析和生成,并有效的提升网络传输效率,通常程序传输时会先将数据序列化成json字符串,接收方再反序列化成原数据类型
所有的数据类型都可以通过Json表示
Json.cn这个网站可以验证Json格式
序列化用json.Marshal()
反序列化用json.Unmarshal(),反序列化时要和序列化前的数据类型保持一致
创建格式:
基本数据类型序列化:
func testBasic() { num := 1.111 marshal, err := json.Marshal(num) if err != nil { fmt.Println("json.Marshal err:", err) } fmt.Println("序列化后:", string(marshal)) // 序列化后: 1.111}结构体序列化:
func main() { testStudent()}/**type Student struct { Name string Age int Birthday string Address string}*/// 如果加上`json:"student_name"`,序列化以后的数据字段是返回指定格式的,可以小写,json固定,后面的随意type Student struct { // 变量首字母大写才能被解析 Name string `json:"student_name"` Age int `json:"student_age"` Birthday string `json:"student_birthday"` Address string `json:"student_address"`}func testStudent() { student := Student{ Name: "itzhuzhu", Age: 24, Birthday: "1998-01-01", Address: "广州市天河区", } marshal, err := json.Marshal(&student) if err != nil { fmt.Println("json.Marshal err:", err) } fmt.Println("序列化后:", string(marshal)) // 序列化后:{"Name":"itzhuzhu","Age":24,"Birthday":"1998-01-01","Address":"广州市天河区"}}map序列化:
func testMap() { var m map[string]interface{} m = make(map[string]interface{}) m["name"] = "韩信" m["age"] = 23 m["address"] = "广州" marshal, err := json.Marshal(m) if err != nil { fmt.Println("json.Marshal err:", err) } fmt.Println("序列化后:", string(marshal)) // 序列化后: {"address":"广州","age":23,"name":"韩信"}}切片序列化:
func testSlice() { var slice []map[string]interface{} var m map[string]interface{} m = make(map[string]interface{}) m["name"] = "韩信" m["age"] = 23 m["address"] = "广州" slice = append(slice, m) marshal, err := json.Marshal(m) if err != nil { fmt.Println("json.Marshal err:", err) } fmt.Println("序列化后:", string(marshal)) // 序列化后: {"address":"广州","age":23,"name":"韩信"}}反序列化为结构体:
func deserialize() { str := "{\"Name\":\"itzhuzhu\",\"Age\":24,\"Birthday\":\"1998-01-01\",\"Address\":\"广州市天河区\"}" // 使用Unmarshal反序列化 var student Student err := json.Unmarshal([]byte(str), &student) if err != nil { fmt.Println("json.Unmarshal err:", err) } fmt.Println("反序列化后:", student) // 反序列化后: {itzhuzhu 24 1998-01-01 广州市天河区}}反序列化为map:
func deserializeMap() { str := " {\"address\":\"广州\",\"age\":23,\"name\":\"韩信\"}" // 反序列化的时候不需要make,被封装到Unmarshal中了 var m map[string]interface{} err := json.Unmarshal([]byte(str), &m) if err != nil { fmt.Println("json.Unmarshal err:", err) } fmt.Println("反序列化后:", m) // map[address:广州 age:23 name:韩信]}反序列化为切片:
func deserializeSlice() { str := " [{\"address\":\"广州\",\"age\":23,\"name\":\"韩信\"}]" var slice []map[string]interface{} err := json.Unmarshal([]byte(str), &slice) if err != nil { fmt.Println("json.Unmarshal err:", err) } fmt.Println("反序列化后:", slice) // 反序列化后: [map[address:广州 age:23 name:韩信]]}到此,关于"Golang中Json的序列化和反序列化怎么使用"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
序列
广州
数据
韩信
格式
类型
天河区
广州市
天河
学习
结构
传输
有效
效率
更多
网站
网络
网络传输
语言
帮助
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
远程服务器设置
服务器在越南
秩和检验如何建立 数据库
加强网络安全和数据保护工作
web服务器的架构
江苏塔式服务器价格咨询
数据库查询设计中如何设主键
专科计算机网络技术女生适合吗
河北安卓软件开发定制
台服奥丁服务器忙
家庭网络安全的应急方案
网络安全对抗赛结果
深圳软件开发公司有哪些简历
办公设备管理系统软件开发
中小孚生家庭教育与网络安全
学数据库还是软件编程好
数据库不允许保存
java数据库迁移
打呆服务器
网络安全杰出人才 2019
域控 数据库
地下城堡3数据库
网络安全横向隔离纵向认证
数据库启动需要密码吗
家政类app软件开发
2017年网络安全感
涉县直销万词霸屏需要服务器吗
网络安全家园共育论文
有没有世界通用服务器
联想服务器怎么关闭numa