Javascript 我应该使用字符串来分隔JSON中的对象名称吗?
我看过一个包含以下JSON的教程:Javascript 我应该使用字符串来分隔JSON中的对象名称吗?,javascript,json,Javascript,Json,我看过一个包含以下JSON的教程: { books:[{title:"frankenstein"},{title:"Moby Dick"}] } 当我把上面的代码放到js.bin中时,我得到一个错误,说它需要一个字符串并看到了一些书。所以我把它改成下面的,它可以工作 { "books":[{"title":"frankenstein"},{"title":"Moby Dick"}] } 但是,如果我将第一个代码段从上面改为下面,它就会工作 var p = { bo
{
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对象表示法之间有关系吗?JSON要求属性名称用双引号字符引用。在JavaScript中,对象文字表达式不需要这种引用。在这方面,相比之下,JSON是严格的。如果属性名采用有效标识符的形式,JavaScript允许属性名不带引号,并且仅当属性名不是保留字时才允许 JSON肯定是从JavaScript中的对象文字语法派生出来的,但是(主要是为了使解析更简单)它更严格。例如,JSON中的属性值不能是函数 您真的必须在JSON中为变量名使用语音标记吗(如果这样做,我看到的示例是不正确的) 对 JSON和javascript对象表示法之间有关系吗 对。JSON是JavaScript对象表示法的缩写(但我不认为这是你的意思) JSON和JavaScript之间的关系是,JSON(几乎)是用于在JavaScript中创建文本的语法的子集 JSON被大大简化了,这使得手工制作变得稍微不方便(不要手工制作JSON,使用库!),但使规范更小,解析器更容易编写 大多数简化都是由于删除了异常 例如: 在JavaScript中,对象文本键可以是标识符(然后在这里插入关于如何在JS中构成有效标识符的详细说明)或字符串。 在JSON中,对象键必须是字符串 在JavaScript中,字符串可以用单引号或双引号分隔。 在JSON中,字符串必须用双引号分隔。如果您提到,那么是的,名称需要正确引用
如果你说“JSON”是,那么不,你不需要转义它们,除非它们是JavaScript中的关键字。“foo-bar”不是关键字,但你必须引用它作为关键字:)(这表明了JSON在这个例子中的简单性优势,它避免了另一个例外)。@Quentin:Yes,准确地说,您需要说:“除非它们不是数字文字或不是保留关键字的标识符名称”。您好,‘如果属性名称采用有效标识符的形式,JavaScript允许属性名称不带引号’在代码中是什么意思?@Pete2k这意味着
{xyz:“hello world”}
在JavaScript代码中是有效的,但它不是有效的JSON。