Go语言基础语法 JSON | 青训营

80 阅读2分钟

介绍

在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 对象。

优势

  1. 语法格式简单
  2. 层次结构清晰更容易阅读
  3. 数据交换方面,节约传输数据所占用的带宽