JSON!
JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation),是一种将数据用字符串表示的格式。
网络接口
在说 JSON 之前,要先说说什么是接口
。
在编写客户端时,需要和服务器进行一些交互,来获取或者更新一些数据。为了使用的方便和服务器的安全,肯定不能让客户端直接操作服务器里的数据。所以呢,就由服务器提供了一些封装好的方法,来给客户端调用,这些方法就是这个服务端的接口。
但是在网络请求中,其实就是将一些字符串发来发去,所以为了方便交互和节省流量,我们就可以使用 JSON 来作为传输的内容。
JSON 的作用
JSON
是一种特殊的字符串,通常用于数据传输(网络、不同语言之间都可以)。JSON 规定了组织数据的方式,然后将数据按格式打印为字符串,这样,其他地方需要使用时,就可以直接解析这个字符串,然后将里面的内容转换成对应语言的表示方式就好。
可以说, JSON 与 XML 的作用没什么区别,只是相比 XML 更加的简洁。
格式
JSON 的格式与 JS 中一个对象的格式一模一样:最外层使用一对大括号( {}
)包裹,然后里面是一个一个的键值对;如果需要用到数组,那就使用方括号( []
)就好。
比如
{
name: 'haha',
arr: [1, 'abc', true],
obj: {
value: 1,
other: 'abc'
}
}
这就是一个 JSON 格式的字符串。
JSON 中可以包括换行符,但是不能有注释
JSON 和对象之间的转换
JS 提供了一个叫做 JSON
的类,来把对象和 JSON 相互转换。
从对象到 JSON
这一过程叫做序列化
。
使用 JSON.stringify
函数就好,具体见MDN 的 stringify 函数说明。
从 JSON 到对象
相对上一节,这一过程叫做反序列化
。
方法有两个,一是使用 JSON.parse
对象,同样可以看 MDN 的文档。
还有一种方法就是使用 eval
函数,这个函数是将一个字符串转换为 JS 代码并且执行,在使用时需要在 JSON 字符串的两侧加上括号 (
,不然会被当成一个代码段来执行。
let obj = eval('(' + yourJSON + ')');
就是这样。