JSON stringify方法原理及实例解析
JSON.stringify()方法用于将JavaScript值转换为JSON字符串。
语法
JSON.stringify(value[,replacer[,space]])
参数说明:
value:
必需,要转换的JavaScript值(通常为对象或数组)。
replacer:
可选。用于转换结果的函数或数组。
如果replacer为函数,则JSON.stringify将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回undefined,则排除成员。根对象的键是一个空字符串:""。
如果replacer是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。
space:
可选,文本添加缩进、空格和换行符,如果space是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果space大于10,则文本缩进10个空格。space也可以使用非数字,如:\t。
返回值:
返回包含JSON文本的字符串。
实例
varstr={"name":"菜鸟教程","site":"http://www.runoob.com"} str_pretty1=JSON.stringify(str) document.write("只有一个参数情况:"); document.write("
"); document.write(""+str_pretty1+""); document.write("
"); str_pretty2=JSON.stringify(str,null,4)//使用四个空格缩进 document.write("使用参数情况:"); document.write("
"); document.write(""+str_pretty2+"");//pre用于格式化输出
但是IE6-7下没有JSON对象,所以要借助json2.js来实现。
今天我们来简单介绍下stringify方法的一些正确使用姿势吧。
当然,让高手们贱笑了,本文只是分享一些方法给新手朋友们。
vardata=[ {name:"王尼玛",sex:1,age:30}, {name:"王尼美",sex:0,age:20}, {name:"王大锤",sex:1,age:30} ]; varstr_json=JSON.stringify(data); console.log(str_json);
这个是我们日常用法,非常简单,对吧。
比如说,我们的数据非常复杂,还有类似头像,昵称,个人签名之类的信息。
可是我保存在本地,只需要用户名,和性别,肿么破呢?
也许你会说soeasy,遍历数据重新提取下即可。
例如:
vardata=[ {name:"王尼玛",sex:1,age:30}, {name:"王尼美",sex:0,age:20}, {name:"王大锤",sex:1,age:30} ]; for(vari=0,new_data=[];i确实分分钟搞定。
其实我们只需要用stringify第二个参数即可简单处理这种问题。
vardata=[ {name:"王尼玛",sex:1,age:30}, {name:"王尼美",sex:0,age:20}, {name:"王大锤",sex:1,age:30} ]; varstr_json=JSON.stringify(data,["name","sex"]); console.log(str_json);第二个参数只要传入需要的keys数组,就非常轻松的就完成这种处理了。
当然如果我们要更纠结的处理,比如要把1,0修改为男女,那么第二个参数可以用回调函数来处理。
vardata=[ {name:"王尼玛",sex:1,age:30}, {name:"王尼美",sex:0,age:20}, {name:"王大锤",sex:1,age:30} ]; varstr_json=JSON.stringify(data,function(k,v){ if(k==="sex"){ return["女","男"][v]; } returnv; }); console.log(str_json);第二个参数如此强悍,为我们省去了不少麻烦。
还有第三个参数,用于格式化字符串用的。
vardata=[ {name:"王尼玛",sex:1,age:30}, {name:"王尼美",sex:0,age:20}, {name:"王大锤",sex:1,age:30} ]; varstr_json=JSON.stringify(data,null,"\t"); console.log(str_json); str_json=JSON.stringify(data,["name","sex"],"\t"); console.log(str_json);其实,我觉得这是个非常鸡肋的功能,,一般情况下却是没啥用。
好了,今天的分享就这些了,希望对新手朋友有所帮助。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。