Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON和javascript对象之间的差异_Javascript_Json - Fatal编程技术网

JSON和javascript对象之间的差异

JSON和javascript对象之间的差异,javascript,json,Javascript,Json,我看不出两者之间的区别: self.todos = [{ "todo": { "title": "title", "content": "lorem" } }, { "todo": { "title": "title", "content": "lorem" } }]; 及 这两个都可以在我的代码中使用,但只有第一个veryfies JSON()。是否有使用什么的偏好 非常感谢如果您正在编写,您必须

我看不出两者之间的区别:

self.todos = [{
    "todo": {
        "title": "title",
        "content": "lorem"
    }
}, {
    "todo": {
        "title": "title",
        "content": "lorem"
    }
}];

这两个都可以在我的代码中使用,但只有第一个veryfies JSON()。是否有使用什么的偏好

非常感谢

如果您正在编写,您必须遵守JSON的规则,其中包括属性名称必须用双引号括起来。(字符串必须是双引号,而不是单引号,并且没有未定义的
或函数,以及各种其他内容……)

你写的不是JSON,而是JavaScript代码;我可以从
self.todos=
部分看出。因此,可以在属性名称上使用无引号、单引号或双引号;这取决于你。有些属性名称需要引号,例如,当属性名称有空格时:

var o = {
    "I have a space": 42
};

关键的区别在于JavaScript源代码就是源代码,JSON是用于数据交换的文本符号,它是JavaScript源代码一小部分的简化版本。当您处理JavaScript源代码时,您没有处理JSON,除非您处理的是字符串(例如,包含JSON的字符串,您可以解析或发送到服务器或类似程序)。

JSON和JavaScript文本之间的严格区别只是您如何使用它

是表示数据的文本格式。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。请求仍然使用JSON作为JavaScript,因为它使用脚本标记加载数据。)

JavaScript没有那么严格,并且不需要对象属性名称的分隔符,这些名称可以用作标识符。此外,您还可以在创建JavaScript文本时使用表达式:

var arr = [{
  todo: {
    title: document.title,
    content: "lo" + "rem"
  }
}];

如果您使用JavaScript文本并尝试将其用作JSON,则语法是错误的。

与他不能在js中使用函数相同:)Thanx对于详细的回复,我想我现在已经了解了很多
var arr = [{
  todo: {
    title: document.title,
    content: "lo" + "rem"
  }
}];