JSON 的本质是一种数据交换格式
数据交换格式,是一种特殊规定的、可以记录数据的文本格式,一般用于传输数据
使用数据交换格式的好处在于:
只要能解析同一种数据交换格式的文本文件,那么即便是用不同语言写的程序,也能相互传输数据
JSON 是 JavaScript Object Notation 的首字母缩写,意思是 JavaScript 对象表示法之所以这么叫是因为 JSON 这种数据交换格式是基于 JavaScript 语言中对象的表示语法的
但只是参考了语法而已,实质是完全不同的东西,一个是数据交换格式,一个是脚本语言中的对象写法
而且语法上也有一些区别:
1. JavaScript 中的对象和所有面向对象语言中的对象一样,拥有属性和函数 (方法)
JSON 中的“对象”(只是一种文本格式) 只有属性,没有方法
2. JSON 中的键值对中的键必须有双引号,而 JavaScript 中的对象的属性键值对中的键,可用可不用双引号
3. JSON 中的字符串必须用双引号,而 JavaScript 中可以用双引号也可以用单引号
JavaScript 中的 eval() 方法如果填入的参数字符串是一个 JavaScript 脚本代码,那么这个函数执行的时候,会直接执行里面的代码
如果填入的是外加 ( ) 的 JSON 格式字符串作为方法参数,这个函数会将其加载为一个 JavaScript 对象并作为返回值返回
所以常常用 var json = eval("("+jsonString+")"); 来将获取的 JSON 字符串转换为 JavaScript 对象
但是由于 eval() 函数会执行脚本字符串,所以如果传递的数据被黑,被更换为恶意的 JavaScript 代码就会有安全风险
JavaScript 中的 JSON.parse() 方法现在一般使用 JSON.parse() 函数来将 JSON 字符串转换为 JavaScript 对象
JSON.parse() 只解析 JSON 字符串,不执行 JavaScript 代码,但一些低版本的浏览器不支持这个函数