JSON语法
什么是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
}
]
}