我应该使用字符串来分隔JSON中的对象名称吗?

时间:2011-06-27 12:54:58

标签: javascript json

我看过一个包含以下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对象表示法之间是否存在关系?

3 个答案:

答案 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中的关键字,否则您无需转义它们。