对JSON的理解
JSON语法:
JSON是⼀种结构化数据,它是⼀种数据格式
JSON可以概括为三种类型:简单值、对象、数组
注意:JSON不⽀持变量、函数和对象实例
⼀、JSON简单值
包括字符串、数值、布尔值、和null(json不⽀持js中的undefined)
例如:
  5  ---------------------->json数值;
  "hello" ---------------------->json字符串(json字符串必需使⽤双引号!);
布尔值和null也是有效的json形式,但实际中json更多的⽤来表⽰复杂的数据结构,简单值只是整个数据结构中的⼀部分。⼆、JSON对象
本质上就是对象,但对象就是在本地⽤,json对象是⽤来传输的
先写⼀个js对象:
var person={
  name:"tom",
  age:3,
};
js对象的属性名可以为双引、单引或不加引号,属性值可以为js简单值,也可以为js复杂值
故也可以写成
var operson={
  "name":"tom",
  "age":4
} ;
json对象的表述⽅式如下:
{
  "name":"tom",
  "age":4
}
json对象的属性名必须为双引,属性名可以为json简单值,也可以为json复杂值
两者之间的区别:
(1)json对象的属性名任何时候都必须加双引号;但js对象的属性名可以为双引、单引或不加引号
(2)json对象没有末尾的分号
(3)json中没有变量的概念,即没有变量声明,即var obj={"name":"tom","age":4} 是⼀个js对象;{"name":"tom","age":4} 才是json对象形式
三、JSON数组采⽤的就是js的数组字⾯量形式
var arr = [25,"hello",true]; ------------->js数组
[25,"hello",true] ----------------------->json数组
⼀般把数组和对象结合起来来构成复杂的数据集合
注意:json数组中也没有变量和末尾的分号
JSON⽅法:
(1)JSON.stringify();  把js对象序列化为json字符串
(2)JSON.parse(); 把json字符串解析为原⽣js值
如:var person = {name:"tom",age:23,skill:["singing","dancing"]};
var str = JSON.stringify(person); ------------> "{"name":"tom","age":23,"skill":["singing","dancing"]}"
json值的类型有哪些var obj = JSON.parse(str); --------------------> {name:"tom",age:23,skill:["singing","dancing"]}
注意:json是⽤来传输的,传输过来的json对象和json数组,经变量接收后,就可以当成正常的js对象和js数组来使⽤,json的序列化和解析⽅法使⽤在json字符串和原⽣js之间