JSON对象的解析,JSON.stringify()/JSON.parse()的用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON对象的解析,JSON.stringify()/JSON.parse()的用法相关的知识,希望对你有一定的参考价值。
ECMAScript 5 对解析 JSON 的行为进行规范,定义了全局对象 JSON 。支持这个对象的浏览器有 IE 8+、Firefox 3.5+、Safari 4+、Chrome
和Opera 10.5+。
JSON 对象有两个方法: stringify() 和 parse()
用法如下:
JSON.stringify()的用法/参数介绍
1、JSON.stringify(jsonObj),jsonObj为JSON数据,该方法是将JSON格式的数据,序列化成字符串类型
var bigWeb= { name:‘zdw‘, sex:‘man‘, birth:‘1989‘ }; var jsonText = JSON.stringify(bigWeb); console.log(jsonText) // jsonText 输出:"{"name":"zdw","sex":"man","birth":"1989"}"
2、JSON.stringify(jsonObj,arr),arr可以为自定义要输出的属性如[‘name‘],参考如下代码1,也可以是一个方法如下代码2:
代码2:Firefox 3.5 和 3.6 对 JSON.stringify() 的实现有一个 bug,在将函数作为该方法的第二个参数时这个 bug 就会出现,即这个函数只能作为过滤器:返回 undefined 意味着要跳过某个属性,而返回其他任何值都会在结果中包含相应的属性。Firefox 4 修复了这个 bug
//代码1
var bigWeb= {
name:‘zdw‘, sex:‘man‘, birth:‘1989‘ }; var jsonText = JSON.stringify(bigWeb,[‘name‘]); console.log(jsonText) //jsonText 输出:"{"name":"zdw"}"
//代码2 var bigWeb= { name:‘zdw‘, sex:‘man‘, birth:‘1989‘ }; var jsonText = JSON.stringify(book, function(key, value){ switch(key){ case "name": return value; case "sex": return 5000; case "birth": return undefined;//返回undefined则该属性在输出的时候将被过滤 default: return value; } }); //输出:"{"name":"zdw","sex":"man","birth":"1989"}"
3、JSON.stringify(jsonObj,arr,num|string) 方法的第三个参数,num(大于10,按10处理)为数值类型用于控制结果中的缩进和空白符,使用如下代码1,如果是自定义字符串string,使用如下代码2:
//代码1
var bigWeb= { name:‘zdw‘, sex:‘man‘, birth:‘1989‘ }; var jsonText = JSON.stringify(bigWeb,[‘name‘],4); //结果自己看下输出看下
//代码2 var bigWeb= { name:‘zdw‘, sex:‘man‘, birth:‘1989‘ }; JSON.stringify(bigWeb,null,‘--‘); //输出如下: "{ --"name": "zdw", --"sex": "man", --"birth": "1989" }"
JSON.parse()的用法/参数介绍
1、JSON.parse(jsonText),jsonText为JSON格式的字符串,该方法是将JSON格式的字符串,序列化成JSON数据,与JSON.stringify()作用相反,使用代码如下:
var bigWeb= { name:‘zdw‘, sex:‘man‘, birth:‘1989‘ }; var jsonText = JSON.stringify(bigWeb); JSON.parse(jsonText) 输出格式如下:{name: "zdw", sex: "man", birth: "1989"}
1、JSON.parse(jsonText,fn),fn该参数是一个函数,将在每个键值对儿上调用,如果还原函数返回 undefined ,则表示要从结果中删除相应的键;如果返回其他值,则将该值插入到结果中,代码如下:
var bigWeb= { name:‘zdw‘, sex:‘man‘, birth:‘1989‘ }; var jsonText = JSON.stringify(bigWeb); var jsonData = JSON.parse(jsonText,function(key,value){ if(key == ‘name‘){ return value; }else if(key== ‘birth‘){ return 1999; }else if(key == ‘sex‘){ return undefined; }else{//这个else一定要加。。。否则输出的结果为undefined return value; } }) //输出的结果:{name: "zdw", birth: 1999}
以上是关于JSON对象的解析,JSON.stringify()/JSON.parse()的用法的主要内容,如果未能解决你的问题,请参考以下文章
js解析与序列化json数据(一)json.stringify()的基本用法
JSON.parse()与JSON.stringify()与qs.stringify的区别
JSON.parse()与JSON.stringify()的区别
JSON.parse()与JSON.stringify()的区别