之前一直误以为JavaScript中的对象字面量(Object Literals)就是JSON对象,因为它的语法和JSON规范里描述的一样,但是该规范也明确地说了JSON只是一个数据交换语言,只有我们将其用在string上下文的时候它才叫JSON。
序列化与反序列化
两个程序(或服务器、语言等)需要交互通信的时候,他们倾向于使用string字符串因为string在很多语言里解析的方式都差不多。复杂的数据结构经常需要用到,并且通过各种各样的中括号{},小括号(),方括号[]和空格来组成,这个字符串仅仅是按照要求规范好的字符。
为此,我们为了描述这些复杂的数据结构作为一个string字符串,制定了标准的规则和语法。JSON只是其中一种语法,它可以在string上下文里描述对象,数组,字符串,数字,布尔型和null,然后通过程序间传输,并且反序列化成所需要的格式。YAML和XML也是流行的数据交换格式,但是作为前端开发人员都喜欢JSON。
字面量
- 它们是固定的值,不是变量,让你从”字面上”了解脚本。
- 字符串字面量是有双引号(”)或单引号(’)包围起来的零个或多个字符组成的。
- 对象字面量是由大括号({})括起来的零个或多个对象的属性名-值对。