介绍
在Go语言中,JSON(JavaScript Object Notation)是一种常用的数据格式,用于在不同系统之间传递和存储数据。Go语言提供了内置的包encoding/json来处理JSON数据,它可以使用json.Marshal()函数将Go数据结构转换为JSON格式的字节切片,使用json.Unmarshal()函数将JSON格式的字节切片转换为Go数据结构。
-
JSON: Java Script Object Notation(JavaScript 对象表示法)
-
JSON 是存储和交换文本信息的语法,类似 XML。
-
JSON 比 XML 更小、更快,更易解析。
例子:
{
"message": [
{ "name":"Jack" , "address":"A" },
{ "name":"Mary" , "address":"B" },
]
}
JSON语法
JSON 的语法可以表示以下三种类型的值。
-
简单值:使用与 JavaScript 相同的语法,可以在 JSON 中表示字符串、数值、布尔值和 null 。但 JSON 不支持 JavaScript 中的特殊值 undefined 。
-
对象:对象表示的是一组无序的键值对。
-
数组:数组的值也可以是任意类型 —— 简单值、对象或数组。
语法
-
数据在名称或值对中
-
数据由逗号分隔
-
大括号
{}保存对象 -
中括号
[]保存数组,数组可以包含多个对象
简单值
{ "msg": "Hello JSON" }
{ "age": "20" }
{ "bool": true }
{ "GF": null }
对象
{ "msg": "Hello JSON", "age": "20" }
let Obj, x;
Obj = { "msg": "Hello JSON", "age": "20" };
x = Obj.name; // Hello JSON
let Obj, x;
Obj = { "msg": "Hello JSON", "age": "20" };
x = Obj["name"]; // Hello JSON
{
"name": "John"
"address": {
"province":"广东省"
"city": "广州市"
}
}
数组
{
"hobby": [ "golang", "sport", "play" ]
}
let x = Obj.hobby[0] // golang
myObj = {
"hobby": [
{ "name":"play", "info":[ "男人", "女人" ] }
]
}
JSON.parse(反序列化)
JSON.parse 将符合 JSON 语法的字符串转换为 JS 对应类型的数据,即 JSON 字符串 => JS 数据。由于 JSON 只有六种数据类型,所以转成的数据也只有6种,如果不符合 JSON 语法,则直接抛出一个 Error 对象,一般使用 try catch 捕获错误。
JSON.stringify(序列化)
JSON.stringify 是 JSON.parse 的逆运算,即 JS 数据 => JSON 字符串,由于 JS 的数据类型比 JSON 多,所以不一定能成功,如果失败,就抛出一个 Error 对象。
优势
- 语法格式简单
- 层次结构清晰更容易阅读
- 数据交换方面,节约传输数据所占用的带宽