我看过一个包含以下JSON的教程:
{
books:[{title:"frankenstein"},{title:"Moby Dick"}]
}
当我将上述内容放入js.bin时,我收到一条错误消息,说它需要一个字符串并看到书籍。所以我把它改成了下面,它有效......
{
"books":[{"title":"frankenstein"},{"title":"Moby Dick"}]
}
但是,如果我将上面的第一个代码段更改为下面的代码片段,则可以正常工作。
var p = {
books:[{title:"frankenstein"},{title:"Moby Dick"}]
};
我想知道的是:
1)您是否真的必须在JSON中使用语音标记作为变量名称(如果您这样做,我看到的示例是不正确的。)
2)JSON和javascript对象表示法之间是否存在关系?
答案 0 :(得分:3)
您是否真的必须在JSON中使用语音标记作为变量名称(如果您这样做,我看到的示例是不正确的。)
是。
JSON和javascript对象表示法之间是否存在关系?
是。 JSON是JavaScript Object Notation的缩写(但我不认为这就是你的意思)。
JSON和JavaScript之间的关系是JSON(非常接近)用于在JavaScript中创建文字的语法的子集。
JSON大大简化,这使得手工操作稍微不方便(不要手工制作JSON,使用库!)但是使规范更小,解析器更容易编写。
大多数简化归结为被删除的异常。
例如:
在JavaScript中,对象文字键可以是标识符(然后在此处插入有关JS中有效标识符的详细说明)或字符串。 在JSON中,对象键必须是字符串。
在JavaScript中,字符串可以用单引号或双引号分隔。 在JSON中,字符串必须用双引号分隔。
答案 1 :(得分:2)
JSON要求使用双引号字符引用属性名称。对于JavaScript对象文字表达式,这种引用在JavaScript中是不。在这方面,JSON比较严格。 JavaScript允许属性名称不加引号如果它们采用有效标识符的形式,那么只有它们不是保留字。
JSON绝对是从JavaScript中的对象文字语法派生而来的,但(主要是为了使解析更简单)它更严格。例如,JSON中的属性值不能是函数。
答案 2 :(得分:1)
如果您谈到JSON as the data-interchange format,那么是的,需要正确引用这些名称。
如果您将“JSON”称为object syntax literal in JavaScript,那么不,除非它们是JavaScript中的关键字,否则您无需转义它们。