千家信息网

Golang中Json的序列化和反序列化怎么使用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"Golang中Json的序列化和反序列化怎么使用",在日常操作中,相信很多人在Golang中Json的序列化和反序列化怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
千家信息网最后更新 2026年11月02日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安全错误 数据库的锁怎样保障安全 互联网科技财经 互联网为科技 美国互联网科技巨头监管 科技与互联网发展 科技服务与互联网 互联网科技股票 未来的互联网科技 融势互联网科技 广州善班互联网科技 互联网科技公司的市场部门 开启互联网科技时代小说 岳阳华臻互联网科技有限公司 湖南一路畅行互联网科技 互联网科技公司营业执照怎么办理 区块链结合互联网科技 众安科技工业互联网合作 杭州披云加互联网科技有限公司 北京军民互联网科技公司 广东猫王互联网科技有限公司电话 小牛互联网科技有限公司地址 中国互联网科技发展 互联网科技有限公司 翻译 广西拼得多互联网科技有限公司 济南和联互联网科技有限公司 互联网科技研发水平 明优互联网科技有限公司 群盈汇互联网科技有限公司 浙南科技城互联网大厦招聘 江苏互联网智能科技产品出厂价 互联网的黑科技实验室
0