序列化:stringify()
将JavaScript对象序列号为JSON字符串
反序列化:parse()
将JSON字符串解析为原生JavaScript值json
序列化选项:
JSON.stringify()除了能够序列化JavaScript对象外,还能够接收另外两个参数,这两个参数用于指定以不一样的方式序列化JavaScript对象,第一个参数是过滤器,第二个参数是选项,表示是否在 json字符串中保留缩进数组
例如:
一个数组:函数
1 var user= { 2 title: '解忧杂货店', 3 author: '东野圭吾', 4 edition: 10, 5 date: '2012-03' 6 }; 7 var jsonText =JSON.stringify(user); 8 console.log(jsonText); 9 var jsonText0 =JSON.stringify(user,["title","author"]); 10 console.log(jsonText0);
控制台返回的数据以下:this
一个函数:spa
1 var user= { 2 title: '解忧杂货店', 3 author: '东野圭吾', 4 edition: 10, 5 date: '2012-03' 6 }; 7 var jsonText =JSON.stringify(user,function(key,value){ 8 switch(key){ 9 case "title": 10 return 'xxxx'; 11 case "author": 12 return undefined; 13 default: 14 return value; 15 } 16 }); 17 console.log(jsonText)
控制台返回的数据以下:
code
JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符对象
例如:blog
1 var user= { 2 title: '解忧杂货店', 3 author: '东野圭吾', 4 edition: 10, 5 date: '2012-03' 6 }; 7 var jsonText0 =JSON.stringify(user); 8 console.log(jsonText0) 9 var jsonText =JSON.stringify(user,null,4); 10 console.log(jsonText)
控制台返回的结果:ip
由上面能够看出缩进与不缩进的结果,相对来讲缩进的可读性强;
注意:缩进的值范围在10 之内大于10的都讲自动装换为10
若是将上面的第三个参数的数字换成符号也能够例如换成 “--”
效果以下:字符串
注意:这里的缩进字符串最长不能超过10个字符,若是超过10个字符,结果中只出现前10个字符
做为JSON.stringify中第二个参数(函数过滤器)补充
方法: date.toJSON()
返回任何序列化的值
例如:
1 var user= { 2 title: '解忧杂货店', 3 author: '东野圭吾', 4 edition: 10, 5 date: '2012-03', 6 toJSON: function(){ 7 //只返回author 8 return this.author; 9 } 10 }; 11 var jsonText0 =JSON.stringify(user); 12 console.log(jsonText0)
控制台返回的结果:
toJSON()做为JSON.stringify中第二个参数(函数过滤器)补充,理解内部顺序很重要。
假设把一个对象传入JSON.stringify() 序列化对象的顺序以下:
(1)若是存在toJSON()方法并且能经过它取得有效的值,则调用该方法。不然,按默认顺序执行序列化
(2)若是提供了第二个参数,应用这个函数过滤器,传入的函数过滤器的值是第(1)步返回的值。
(3)对第(2)步 返回的每一个值进行相应的序列化。
(4)若是提供了第三个参数,执行相应的格式化操做。
解析选项:
JSON.parse()方法也能够接收另外一个参数,改参数是一个函数,讲在买个键值对上调用,为区别JSON.stringify()方法接收的过滤器(有多是函数的函数(replace)),在这里的函数叫还原函数(reviver)。接收两个参数,一个键和一个值,而且须要返回一个值。
例如:
1 var user= { 2 title: '解忧杂货店', 3 author: '东野圭吾', 4 edition: 10, 5 date: '2012-03', 6 releaseDate: new Date(2017,11,28) 7 }; 8 9 var jsonText1 =JSON.parse(jsonText0,function(key,value){ 10 if(key == "releaseDate"){ 11 return new Date(value) 12 }else{ 13 return value 14 } 15 }); 16 console.log(jsonText1.releaseDate)
控制台返回的结果:
简单来讲就这样咱们就解析后的内容中获取须要的年月日等内容。