JSON 是一种借鉴JavaScript语法的语言,一种轻量级的数据交换格式,用于序列化对象、数组、字符串、数值、布尔值和 null ,它基于 JavaScript 语法,但与之不同。

JavaScript不是JSON,JSON也不是JavaScript。

在互联网上,我们一遍又一遍地听到:“JSON是一个JavaScript子集”,事实并非如此。比如,JSON中的属性需要加双引号,但JavaScript属性不能加,并非所有JSON文本都是合法的JavaScript代码。

在JavaScript中:

var person = {
  firstName: "ToC", 
  lastName: "RD"
};

在JSON中:

{
  "firstName": "ToC",
  "lastName": "RD"
}

像这样的细节还有很多:JSON 不支持函数、undefined、变量、引用、单引号字符串、JSON没有内置的 Date、Math、RegExp 等。 而 JavaScript 全有。

JSON 和 JavaScript 数据类型上的不同

JavaScript类型 JSON 的不同之处
对象和数组 1、属性名必须用双引号括起来
2、最后一个属性后不能有逗号
数值 1、禁止出现前导零( JSON.stringify 方法会忽略前导零,JSON.parse 方法会抛出 SyntaxError 异常)
2、如果有小数点,后面至少有一位数字
字符串 1、只有有限的一些字符可能会被转义
2、禁止某些控制字符 
3、Unicode 行分隔符 (U+2028)和段分隔符 (U+2029)被允许
4、字符串必须用双引号括起来

JSON 和 JavaScript 的区别

区别 JSON JavaScript对象
含义 仅仅是一种数据格式 对象的实例
传输 可以跨平台数据传输,速度快 不能传输
表现 1、键值对
2、属性必须加双引号
3、值不能为方法函数/undefined/NaN
1、键值对
2、值可以是函数、对象、字符串、数字、boolean 等
相互转换 JSON 转JavaScript 对象:
1、var obj = JSON.parse(jsonStr);
2、 var obj = eval("("+jsonStr+")");
JavaScript 对象 转 JSON:
JSON.stringify(obj);