JSON 一共支持 6 种数据类型,掌握它们的规则是写出合法 JSON 的基础。本文逐一讲解,并标出每个类型最容易踩的坑。
字符串是 JSON 里最常见的类型,规则只有一条:必须用双引号包裹。
{ "name": "Tom", "city": "北京" }
注意:单引号、反引号都不合法。字符串里如果需要包含双引号或反斜杠,要用转义(见 JSON 转义字符详解)。
数字支持整数和浮点数,可以直接写,不能加引号(加引号就变成字符串了):
{ "age": 18, "pi": 3.14, "count": -5, "big": 1.2e10 }
注意:NaN、Infinity、十六进制 0xFF 都是非法的,只能写十进制数字。
只有 true 和 false 两个值,同样不能加引号:
{ "active": true, "deleted": false }
null 表示「空」或「无值」,和 JavaScript 一样用小写,不能写成 NULL 或 Null:
{ "middleName": null }
对象是无序的键值对集合,用花括号 {} 包裹,键必须加双引号:
{ "name": "Tom", "age": 18 }
数组是有序的列表,用方括号 [] 包裹,元素可以是任意类型(包括嵌套的对象和数组):
{ "tags": ["json", "前端"], "list": [1, "a", true, null, { "x": 1 }] }
| 类型 | 示例 | 易错点 |
|---|---|---|
| 字符串 | "hello" |
必须双引号 |
| 数字 | 18、3.14 |
不能是 NaN/十六进制 |
| 布尔 | true / false |
不能加引号 |
| 空值 | null |
只能小写 |
| 对象 | {"a":1} |
键要加双引号 |
| 数组 | [1,2,3] |
元素不能有尾逗号 |
不确定一段 JSON 的类型写得对不对?用 JSON 在线校验工具 粘贴后立即解析,错误会精确定位到行列。