🐸 青蛙编程网
首页 / 前端 / JSON / 2. JSON 语法

JSON 语法

这是什么:JSON 的语法 = 写 JSON 必须遵守的规矩:值只有六种类型,外加「键必须双引号」「不许尾逗号、不许注释」两条铁律。

为什么用:JSON 是机器严格执行的格式,多一个逗号、少一对引号就整个解析失败。先把规矩背牢,能避开 90% 的报错(剩下的 10% 交给第 5 章的排错术)。

如何用:每条规则都配一个 ✅ 合法 和一个 ❌ 非法的对照示例,照着写就对了。

六种值类型

JSON 的值只有下面六种,没有第七种:

{
  "string": "文字,必须双引号",
  "number": 3.14,
  "booleanTrue": true,
  "booleanFalse": false,
  "null": null,
  "array": [1, "two", true],
  "object": { "city": "池塘镇" }
}

等等,这是七行?——数一数类型:字符串、数字、布尔、null、数组、对象,正好六种(数组里放了三种类型,是想说明数组元素不必同类型)。

类型 写法 注意
字符串 "青蛙" 只能双引号,单引号非法
数字 3、-2、3.14、2e3 不用引号;不写八进制十六进制
布尔 true / false 全小写,True、TRUE 都非法
空值 null 全小写;JS 的 undefined 在 JSON 里不存在
数组 [] 元素用逗号隔开,类型可混
对象 {} 键必须双引号字符串

铁律一:键必须双引号

✅ { "name": "呱小吉" }
❌ { name: "呱小吉" }
❌ { 'name': "呱小吉" }

键不写引号是 JS 对象的写法,JSON 不认;单引号也不行,只有双引号是合法的。这是 JSON 和 JS 对象最大的区别,也是新手第一大坑。

铁律二:不许尾逗号、不许注释

✅ { "a": 1, "b": 2 }
❌ { "a": 1, "b": 2, }
❌ { "a": 1, /* 备注 */ "b": 2 }
  • 每个「值」后面跟的逗号,后面必须还有内容;最后一个成员后面绝不能有逗号(尾逗号)
  • JSON 里没有注释这回事——想写说明,就加一个键,比如 "note": "此字段已废弃"

对象和数组可以互相嵌套

{
  "class": "蛙一班",
  "students": [
    { "name": "呱小吉", "age": 3 },
    { "name": "蛙大壮", "age": 4 }
  ]
}

对象里放数组(students),数组里再放对象(每个学生),一层套一层就构成了真实世界的数据。怎么优雅地取深层值,第 4 章专门讲。

怎么验证我写对了没有

最简单的办法:打开浏览器控制台(F12),用 JSON.parse() 试一下——合法就返回对象,非法就报错(报错怎么看,第 5 章教):

JSON.parse('{ "name": "呱小吉" }')   // ✅ 返回 {name: '呱小吉'}
JSON.parse("{ name: '呱小吉' }")     // ❌ 报错,单引号 + 键没双引号

记忆口诀:键要双引号,值看六类型;逗号别多写,注释不存在的。

📝 本章小结

  • 六种值类型:字符串(双引号)、数字、布尔(小写)、null、数组、对象
  • 铁律一:键必须双引号,单引号、无引号都非法
  • 铁律二:不许尾逗号、不许注释
  • 对象数组可无限嵌套;JSON.parse() 一试便知合法与否

动手改

  1. 写一份你的个人名片 JSON:姓名、年龄、三个爱好(数组)、是否养宠物(布尔)
  2. 故意写一处尾逗号,用 JSON.parse() 看看报什么错
  3. 把爱好数组里再加一个对象:{ "hobby": "游泳", "years": 2 }

上一章:JSON 是什么 · 下一章:转换 🐸

📥 下载本章代码

ZIP 内含本章全部代码文件与说明,解压即用,与教程内容同步生成。