JSON:

  • JSON(JavaScript Object Notation):是一种轻量级的数据交换格式。 它是基于 ECMAScript 规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
  • 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于计算机解析和生成,并有效的 提升网络传输效率。
  • Json易于机器解析和生成,并有效的提升网络传输效率,通常程序传输时会先将数据序列化成json字符串,接收方再反序列化成原数据类型
  • 所有的数据类型都可以通过Json表示
  • Json.cn这个网站可以验证Json格式
  • 序列化用json.Marshal()
  • 反序列化用json.Unmarshal(),反序列化时要和序列化前的数据类型保持一致

创建格式:

基本数据类型序列化:

func testBasic() {num := 1.111marshal, 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     stringAge      intBirthday stringAddress  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"] = 23m["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"] = 23m["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 Studenterr := 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的序列化和反序列化相关推荐

  1. Json的序列化和反序列化

    1.引用命名空间: using System.Runtime.Serialization; 2.json的序列化和反序列化的方法: publicclass JsonHelper { ///<su ...

  2. 在C#中,Json的序列化和反序列化的几种方式总结

    在C#中,Json的序列化和反序列化的几种方式总结 在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据,以及如何反序列化Json数据到对象. 什么是JSON? JSON (Ja ...

  3. ASP.NET中JSON的序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...

  4. Newtonsoft.Json 的序列化与反序列化

    首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化. 创建 ...

  5. Json.Net系列教程 3.Json.Net序列化和反序列化设置

    上节补充 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列 ...

  6. java newtonsoft.json_Newtonsoft.Json 的序列化与反序列化

    首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化. 创建 ...

  7. 一起谈.NET技术,ASP.NET 中JSON 的序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...

  8. C#中的Json的序列化和反序列化

    Json是一种通用的数据格式,我们在数据交换的时候,经常会用到,下面介绍c#中的json序列化和反序列化,当然也可用在asp.net,silverlight,wpf中.我们在下面实例讲解如何进行Jso ...

  9. C# JSON字符串序列化与反序列化(转)

    C# JSON字符串序列化与反序列化 C#将对象序列化成JSON字符串 public string GetJsonString() { List<Product> products = n ...

最新文章

  1. 2022秋招大战:算法岗挤破头,JAVA开发也被迫内卷
  2. 关于MySQL的SLEEP(N)函数
  3. php判断完整数,PHP的几个常用数字判断函数代码
  4. Android 开发中常用小技巧
  5. python的认识_认识Python和基础知识
  6. 不会诈骗的公司 都倒闭了
  7. phpcms模型缓存更新原理分析(转)
  8. memsql 多节点部署
  9. Prefuse 4未完
  10. TQ2440实现触摸屏和qt图形 解决segmentation fault
  11. 逻辑函数的两种标准形式
  12. 室性心律失常影响因素分析
  13. 银保监会回应中国金融机构数据被公开售卖:绝大部分系黑客伪造拼凑
  14. 我认为还是得学会自己焊接贴片元件,有专门的贴片元件焊接练习板,虽然有SMT,就像无人机要练习飞自稳一样。我们不能什么都靠SMT
  15. STM32F105RBT6 uart调试
  16. 使用GTK+获取屏幕分辨率并设置满屏显示效果
  17. 第一周 周报
  18. 【Python9】字典与集合
  19. php程序开发编辑器有哪些,常用的PHP编辑器有哪些?
  20. MySQL 获取当前时间的秒级、毫秒级时间戳

热门文章

  1. html输入密码跳转页面_【小乔锦囊】角色/仓库密码无法清除,怎么办?
  2. mysql手动启动1067错误_解决MySQL启动时万恶的1067错误(转)
  3. Node.js Event loop 图解
  4. 关于 create-react-app 自定义 eslint文件配置解决方案
  5. Java 多个异常处理
  6. Jsoup解析body片段
  7. python 生成图片_python生成带有表格的图片
  8. 面向对象方法的优势简化软件开发的过程_软件开发技巧的途径
  9. 微信公众号中选择时间css,微信公众号到底应该几点推文?
  10. pcl里面的点特征直方图(PFH)