JSON和javascript对象之间的区别

difference beetween JSON and javascript object

本问题已经有最佳答案,请猛点这里访问。

我看不出之间的区别:

1
2
3
4
5
6
7
8
9
10
11
self.todos = [{
   "todo": {
       "title":"title",
       "content":"lorem"
    }
}, {
   "todo": {
       "title":"title",
       "content":"lorem"
    }
}];

1
2
3
4
5
6
7
8
9
10
11
    self.todos = [{
    todo: {
        title:"title",
        content:"lorem"
    }
}, {
    todo: {
        title:"title",
        content:"lorem"
    }
}];

两者都在我的代码中工作,但只有第一个非常好的JSON(在线JOSON非常有效)。 是否有偏好使用什么。

非常感谢


JSON和JavaScript文字之间的严格区别仅在于您如何使用它。

JSON是一种表示数据的文本格式。 JavaScript文字是JavaScript代码的一部分。

你不能在JavaScript代码中使用JSON,因为它根据定义不再是JSON,它是JavaScript。但是,您可以使用JSON并将其用作JavaScript代码。您还可以在JavaScript中的字符串中包含JSON。

JSON语法是JavaScript文字语法的子集,因此您可以使用任何JSON并将其用作JavaScript,但您不能使用任何JavaScript文字并将其用作JSON。

这是JSON的一个例子:

1
2
3
4
5
6
[{
 "todo": {
   "title":"title",
   "content":"lorem"
  }
}]

您可以将其用作JavaScript:

1
2
3
4
5
6
var arr = [{
 "todo": {
   "title":"title",
   "content":"lorem"
  }
}];

您还可以将JSON作为字符串并将其解析为JavaScript值:

1
2
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文字时使用表达式:

1
2
3
4
5
6
var arr = [{
  todo: {
    title: document.title,
    content:"lo" +"rem"
  }
}];

如果您使用该JavaScript文字并尝试使用JSON,则语法错误。


如果您正在编写JSON,则必须遵守JSON规则,其中包括属性名称必须使用双引号的事实。 (并且该字符串必须是双引号,而不是单引号,并且没有undefined或函数,以及其他各种各样的东西......)

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

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

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