我看不出:
之间的区别self.todos = [{
"todo": {
"title": "title",
"content": "lorem"
}
}, {
"todo": {
"title": "title",
"content": "lorem"
}
}];
和
self.todos = [{
todo: {
title: "title",
content: "lorem"
}
}, {
todo: {
title: "title",
content: "lorem"
}
}];
都在我的代码中工作,但只有第一个非常有效的JSON(online JOSON veryfier)。是否有偏好使用什么。
非常感谢
答案 0 :(得分:4)
如果您正在编写JSON,则必须遵守JSON规则,其中包括属性名称必须使用双引号的事实。 (而且这些字符串必须是双引号,而不是单引号,并且没有undefined
或函数,以及其他各种各样的东西......)
您正在撰写的内容不是 JSON,但是,它的JavaScript代码;我可以从self.todos =
部分说出来。因此,您可以在属性名称上不使用引号,单引号或双引号;它取决于你。有一些属性名称需要引号,例如当属性名称有空格时:
var o = {
"I have a space": 42
};
关键区别在于JavaScript源代码是源代码,而JSON是数据交换的文本符号,它是JavaScript源代码的一小部分的简化版本。当您处理JavaScript源代码时,除非您正在处理字符串(例如,包含JSON的字符串,您可能会解析或发送到服务器或类似字符串),否则您不会处理JSON。 )。
答案 1 :(得分:4)
JSON和JavaScript文字之间的严格区别仅在于您如何使用它。
JSON是一种表示数据的文本格式。 JavaScript文字是JavaScript代码的一部分。
你不能在JavaScript代码中使用JSON,因为它根据定义不再是JSON,它是JavaScript。但是,您可以使用JSON并将用作 JavaScript代码。您还可以在JavaScript中的字符串中包含JSON。
JSON语法是JavaScript文字语法的子集,因此您可以使用任何JSON并将其用作JavaScript,但不能使用任何JavaScript文字并将其用作JSON。
这是JSON的一个例子:
[{
"todo": {
"title": "title",
"content": "lorem"
}
}]
您可以将其用作JavaScript:
var arr = [{
"todo": {
"title": "title",
"content": "lorem"
}
}];
您还可以将JSON作为字符串并将其解析为JavaScript值:
var json = '[{ "todo": { "title": "title", "content": "lorem" } ]';
var arr = JSON.parse(json);
请注意,解析JSON不会将JSON用作JavaScript,它会读取JSON并创建与其对应的JavaScript值。 (在JSON解析可用之前,eval
函数用于解析JSON,并且实际上将JSON用作JavaScript。JSONP请求仍然使用JSON作为JavaScript,因为它使用脚本标记加载数据。)
JavaScript不那么严格,并且不需要可用作标识符的对象属性名称的分隔符。此外,您可以在创建JavaScript文字时使用表达式:
var arr = [{
todo: {
title: document.title,
content: "lo" + "rem"
}
}];
如果您使用该JavaScript文字并尝试使用JSON,则语法错误。