1.JSON可以表示三种类型的值:
(1)、简单值:可以表示字符串、数值、布尔值和null。 但不支持undefined; 如:5,"hello world"都可以用JSON表示
(2)、对象:一种复杂数据类型,表示一组无序的键值对;
(3)、数组:复杂数据类型,有序的数值列表;
2.JSON的操作方法:解析与序列化
stringify(),parse(),parse()都是将JSON字符串解析为原生JavaScript对象,stringify()则是将JavaScript对象序列化为JSON字符串。
(1)、序列化
stringify(obj[,strainer[,num_or_str]]) : 该方法有三个参数,第一个必须,后两个可选;
obj : 将要被序列化的js对象;
strainer: 过滤器,可以是数组,也可以是方法,若没有就用null;
num_or_str: 缩进选择,若是数字,则直接缩进多少个空格,若是字符串,则以该字符串为格式缩进
/** *stringify() */ let js_obj = { name: '张三', age: 25, id: 110, pra_obj: { name: 'lisi', tel: 119 } }; //传入一个参数 let s_1 = JSON.stringify(js_obj); console.log(s_1); //{"name":"张三","age":25,"id":110,"pra_obj":{"name":"lisi","tel":119}} console.log(typeof s_1); //string //传入两个参数(根据对象一层一层的过滤) //数组 let s_2_a = JSON.stringify(js_obj, ['name', 'id', 'pra_obj']); console.log(s_2_a); //{"name":"张三","id":110,"pra_obj":{"name":"lisi"}} //函数 let s_2_f = JSON.stringify(js_obj, function(key, val){ console.log(key+'-----'+val); switch (key) { case 'name' : return '我的名字是'; case 'id' : return '我的id是'; default : return val } }); console.log(s_2_f); //{"name":"我的名字是","age":25,"id":"我的id是","pra_obj":{"name":"我的名字是","tel":119}} //传入三个参数 let s_3_n = JSON.stringify(js_obj, null, 4); console.log(s_3_n); /* { "name": "张三", "age": 25, "id": 110, "pra_obj": { "name": "lisi", "tel": 119 } } */ let s_3_s = JSON.stringify(js_obj, null, '---lala'); console.log(s_3_s); /* { ---lala"name": "张三", ---lala"age": 25, ---lala"id": 110, ---lala"pra_obj": { ---lala---lala"name": "lisi", ---lala---lala"tel": 119 ---lala} } */
(2)、解析
parse(JSON_str[,revier]); 两个参数,第一个必须,第二个可选
JSON_str : JSON字符串;
revier: 还原函数
/** *parse() */ let js_obj = { name: '张三', age: 25, id: 110, pra_obj: { name: 'lisi', tel: 119 }, date : new Date() }; let s_1 = JSON.stringify(js_obj); console.log(s_1); //一个参数 let obj_1 = JSON.parse(s_1); console.log(obj_1); //{name: "张三", age: 25, id: 110, pra_obj: {…}, date: "2018-05-08T15:35:27.415Z"} //两个参数 let obj_2 = JSON.parse(s_1,function (key,val) { console.log(key+'------'+val); if(key === 'date'){ return '现在的时间是:-----'+new Date() }else { return val } }); console.log(obj_2); //{name: "张三", age: 25, id: 110, pra_obj: {…}, date: "现在的时间是:-----Tue May 08 2018 23:57:07 GMT+0800 (中国标准时间)"}