JSON语法

TOC

什么是JSON?

JSON的全称是JavaScript Object Notation,也叫JavaScript 对象表示法,它是一种轻量级的数据交换格式。

JSON的特点:

  • 易读易写:结构清晰,类似于JavaScript对象。
  • 轻量级:比XML更简洁,占用带宽更少。
  • 跨语言:不仅在JavaScript中使用,各种语言(Python、Java、Go、C# …)都有对应的 JSON 库。
  • 常用于前后端数据交互:比如接口返回数据。

JSON语法

基本语法规则:

  • JSON的数据以键值对"key": "value"的形式表示
  • 数据之间用逗号,分隔。
  • 对象使用大括号{}包裹。
  • 数组对象使用中括号[]包裹。
  • 键必须是字符串,用双引号""包裹。

下面展示一个简单的JSON数据:

{
  "id": 1024,
  "name": "Alice",
  "age": 29,
  "isStudent": false,
  "hobbies": ["旅行", "摄影", "音乐"],
  "score": {
    "math": 88,
    "english": 92,
    "programming": 95
  }
}

JSON数据类型

JSON 中的值可以是以下数据类型:

  • 数字(整数或浮点数);
  • 字符串(需要在双引号中定义);
  • 布尔值(true 或 false);
  • 数组(在方括号中定义);
  • 对象(在花括号中定义);
  • null(空)。

字符串

字符串中的转义字符:

  • \\反斜线本身;
  • \/正斜线;
  • \"双引号
  • \b退格;
  • \f换页;
  • \n换行;
  • \r回车;
  • \t水平制表符;
  • \u四位的十六进制数字。‘

【示例】如下所示:

{
    "name": "jack",
    "full_name": "thomas"
}

数字

JSON中不区分整型和浮点型,只支持使用IEEE-754双精度浮点格式来定义数字。此外,JSON中不能使用八进制和十六进制表示数字,但可以使用e或E来表示10的指数。
【示例】如下所示:

{
    "age": 18,
    "number": -189,
    "price": 78.24
}

布尔值

JSON 中的布尔值与PHP、Java、Python等编程语言中相似,有两个值,分别为true(真)和false(假)。
【示例】如下所示:

{
    "status": true,
    "checked": false
}

空值

null(空)是JSON中的一个特殊值,表示没有任何值。
【示例】如下所示:

{
    "info": null
}

对象

JSON 中,对象由花括号{}以及其中的若干键值对组成,一个对象中可以包含零个或多个键值对,每个键/值对之间需要使用逗号,分隔。类似于Python中的字典。
【示例】如下所示:

{
    "data": {
        "name": "jack",
        "age": 18,
        "phone": "18272638227",
        "email": "jack@email.com"
    }
}

数组

JSON 中,数组由方括号[]和其中的若干值组成,值可以是JSON中支持的任意类型,每个值之间使用逗号,进行分隔。类似于Python中的列表。
【示例】如下所示:

{
    "fruit": ["apple", "orange", "banana"]
}

JSON对象

使用对象类型时,有几点需要注意:

  • 对象必须包裹在花括号{}中;
  • 对象中的内容需要以键/值对的形式编写;
  • 键必须是字符串类型,即使用双引号""将键包裹起来;
  • 值可以是任意 JSON 中支持的数据类型(例如字符串、数字、对象、数组、布尔值、null 等);
  • 键和值之间使用冒号进行分隔;
  • 不同键/值对之间使用逗号进行分隔;
  • 对象中的最后一个键/值对末尾不需要添加逗号。

【示例】如下所示:

{
	"name": "张三",
	"age": 25,
	"isStudent": true,
	"list": ["英语", "语文", "数学"],
	"other": {
	    "email": "zhangsan@email.com",
	    "phone": "17862763937"
	}
}

JSON数组

使用数组时,有几点需要注意:

  • 数组必须使用方括号[]定义;
  • 数组的内容由若干值组成;
  • 每个值之间需要使用逗号,进行分隔;
  • 最后一个值末尾不需要添加逗号;
  • 数组中的值可以是 JSON 中的任何类型,例如字符串、数字、对象、数组、布尔值、null 等。

【示例】如下所示:

{
	"list": [
	    {
	        "name": "张三",
	        "age": 25,
	        "isStudent": true
	    },
	    {
	        "name": "李四",
	        "age": 28,
	        "isStudent": false
	    }
	]
}