写在前面:
这个JSON很早前就已经有接触了,早些时候的对JSON的定义和使用模棱两可,知道在他的用处,但是具体深入去了解直到我今天重新回顾了一遍JavaScript才恍然大悟。果然复习是学习之母!
JSON
首先来说明一下什么是JSON:
JSON(JavaScript Object Notation)是一种最简单的串行化格式,他是JavaScript语言的一个子集,易于串行化和反串行化。那么,什么叫串行化和反串行化?在web页面中,相当于一个程序,如何去处理这些数据和存储数据,我们通过JavaScript去实现,但是,对象和数组不能仅仅存储起来,还要串行化他们,串行化是转换为其字符串表示的过程,串行化对象后,该对象的字符串表示就可以存储在更永久的存储设备中,或者传递给另一台计算机。那么数据在串行化中是以什么样的形式存在呢?串行化仅转换对象的结构和相关信息,在串行化的对象中只有属性。如果需要在JavaScript中处理该对象,就需要用到反串行化了。
XML和JavaScript的局限
XML,最早期技术人员用来存储和传输JavaScript的一种格式。XML便于人和机器阅读,但是也有一定的缺陷,XML的声明性语法给数据添加了许多额外的东西。通常文档存储一个对象所用到的字节数大,使用JavaScript解析不轻松,而且解析完要发送给服务器之前还要进一步对它进行串行化,不是很容易。
//XML文档 <person> <name>CIA</name> <age>21</age> </person> //拿到XML文档的数据 var personElement = document.querySelector("person"), nameELement = personElement.querySelector("name").innerHTML, ageELement = personElement.querySelector("age").innerHTML var person ={ name:nameELement, age:ageELement }
JSON可以表示的三种数据
1.简单值
常见的简单值有:字符串,数字,布尔值和null。但是JSON的字符串必须使用双引号。
2.对象
JSON是一种数据格式,不是语言,所以没有变量,函数和方法。仅定义对象的数据和结构。
不需要分号。没有对象变量名。属性和值要用双引号,字面量值可以不需要。
{ "name":"CIA", "age":22 }
3.数组
["CIA",22]
串行化为JSON
使用JSON的stringfy()方法,他接受任何值,对象或数组,并将它们串行化为JSON。
//JSON var json = JSON.stringfy(person);
解析JSON
使用JSON的parse()方法,返回得到对象。
var jsonCIA = JSON.parse(json), name = jsonCIA.name