JSON详解
首先要知道JSON是一种轻量级的数据格式,不是一种编程语言,因此其他语言也可以使用。
一、JSON语法
JSON语法可以表现为下面三种值:
1.简单值:字符串、数值、布尔值和null,如"hello json",3,false,null。但是JSON不支持undefined
2.对象:一种复杂的数据类型,表示的是一组无序的键值对,栗子如下:
1 { 2 "name":"guozhu", 3 "age":23, 4 "hobby":{ 5 "sport":"bicyle", 6 "music":"guoge" 7 } 8 }//每个键值对中的值可以是简单值也可以是复杂数据类型的值
3.数组:与对象一样也是复杂的数据类型,但是它表示的是一组有序的列表,因此可以通过索引值来访问。
[ "xiaohua",23,{ "hobby":"bicyle", "eat":"apple" } ]//数组的值可以是简单值、复杂数据类型的值
二、JSON与JS
相同点:JSON简单值与JS语法相同
不同点:1.JSON字符串与JS字符串区别在于JSON字符串必须使用双引号
2.JSON对象没有声明变量、没有末尾分号且对象的属性必须加双引号
3.JSON数组与JSON对象一样没有变量和分号
三、JSON.stringify()方法
stringify()方法用于将JS对象转化为JSON字符串,此方法有三个参数:第一个参数JS对象、第二个参数过滤器、第三个参数是一个选项表示是否在JSON字符串中保留缩进
1 // JS对象 2 var person = { 3 name:"xiaohua", 4 age:19 5 } 6 var joPerson = JSON.stringify(person); 7 console.log(joPerson);//{"name":"xiaohua","age":19}
上面代码只传入JS对象,打印结果已注释出来,可以看到stringify()输出的JSON字符串不包含空格字符或缩进
现在传入第二个参数过滤器(可以是一个数组或函数)打印一下
1 var person = { 2 name:"xiaohua", 3 age:19, 4 } 5 var joPerson = JSON.stringify(person,["age"]); 6 console.log(joPerson)//{"age":19}
上面代码第二个参数传入的是一个数组,其中有一个字符串与person对象的属性相对应,打印出来的结果也只包含与其对应属性的值
现在传入第三个参数(数值或字符串)用于缩进
1 var person = { 2 name:"xiaohua", 3 age:19, 4 } 5 var joPerson = JSON.stringify(person,null,"**"); 6 console.log(joPerson);
打印出来的结果如下图
如上面代码传入的是一个字符串而非数值,则这个字符串在打印出来的JSON字符串中被用作缩进字符串
四、JSON.parse()方法
该方法用于将JSON字符串解析成JS对象
1 var person = { 2 name:"xiaohua", 3 age:19, 4 } 5 var joPerson = JSON.stringify(person); 6 console.log(joPerson);//{"name":"xiaohua","age":19} 7 var jsPerson = JSON.parse(joPerson); 8 console.log(jsPerson);
上面代码先用JSON.stringify()方法将person对象转换成JSON字符串,再利用JSON.parse()方法将joPerson(JSON字符串)转换成JS对象
小结:
1.JSON是一个轻量级的数据格式
2.JSON使用JavaScript语法的子集表示对象、数组、字符串、数值、布尔值和null
3.JSON.stringify()方法将JS对象转换成JSON字符串
4.JSON.parse()方法将JSON字符串转换成JS对象