5月29日 01:08
JSON 的语法规则有哪些?哪些是容易踩坑的?
JSON 语法看似简单,但有几条规则与 JavaScript 对象字面量不同,容易踩坑。核心规则:键名必须用双引号包裹("name" 不能写成 name);字符串也只能用双引号,单引号非法;最后一个键值对后不能有尾逗号;不支持注释;值只能是 string、number、boolean、null、object、array 六种类型,不支持 undefined、Date、Function、RegExp。数字不支持前导零(01 非法)和 NaN/Infinity。字符串中的特殊字符需转义,如 \n、\"、\\。大小写敏感:只有小写的 true、false、null 合法,TRUE 或 Null 都会解析失败。
追问
{"a": 1,}在 JS 中合法但 JSON 非法,为什么 JSON 要禁止尾逗号?JSON.parse('{"a": undefined}')会怎样?undefined 在对象和数组中的序列化行为有何不同?- JSON 数字为什么不区分整数和浮点数?
1e3在 JSON 中合法吗? - 如何在 JSON 中表示二进制数据?Base64 编码有什么局限?
JSON.parse('123')合法吗?JSON.parse('"hello"')呢?最外层必须是对象吗?
写段代码
javascript// 合法 JSON const a = JSON.parse('{"name":"Alice","age":25}'); // 非法:单引号键名 // JSON.parse("{'name':'Alice'}"); // SyntaxError // 非法:尾逗号 // JSON.parse('{"name":"Alice",}'); // SyntaxError // 合法:最外层不是对象 JSON.parse('123'); // 123 JSON.parse('"hi"'); // "hi"