《JavaScript高程》中说JSON中对象的属性名任何时候都要加双引号,后面却又有:
{
"title": "professional javascript",
"authors": [
"nicholas c.zakas"
],
edition: 3,
year: 2011
}
这里的edition和year为什么没加双引号?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
因为你题目中的代码根本不是JSON,而是“对象字面量”。
JSON是一种独立于具体语言的数据交换格式,它虽然的确是脱胎于JavaScript中的对象字面量表示方法的,但是它的格式要求比对象字面量严格很多,包括属性名必须用双引号括起来。
所以,书中的说法并不矛盾,因为前后说的不是同一种东西。
给你举个例子吧:
参考这里:http://www.json.org/json-zh.html
我当时也发现这个问题,做了个测试:
在不给age加双引号时这不是JSON,因此不能使用JSON.parse()方法将其转化成json对象
所有key都加上双引号才是严格意义上的JSON,才能使用JSON.parse()将其转化成json对象
结论:JSON键值都必须有双引号,即使值为number类型也不能省略。
规范的json确实是无论是key还是value都加双引号。
一般来说,json中的key可以不加引号,也能正确读取。
不懂装懂的答案,自删