js解析json数据格式化及压缩方法

经常写代码就免不了与json这种轻量级的数据打交道,一般我们得到的json字符串是混乱的,计算机不在乎,再乱它都能认识,作为人类,虽然也能认识,但识读起来比较困难。

将json字符串格式化后,就变成了一对一对的键值对形式,极大地提高了数据的可读性,下面是网友写的一份json数据处理的js方法。

 function format(txt,compress/*是否为压缩模式*/)
{/* 格式化JSON源码(对象转换为JSON文本) */ 
 var indentChar = ' '; 
 if(/^\s*$/.test(txt)){ 
 alert('数据为空,无法格式化! '); 
 return; 
 } 
 try{var data=eval('('+txt+')');} 
 catch(e){ 
 alert('数据源语法错误,格式化失败! 错误信息: '+e.description,'err'); 
 return; 
 }; 
 var draw=[],last=false,This=this,line=compress?'':'\n',nodeCount=0,maxDepth=0; 
 
 var notify=function(name,value,isLast,indent/*缩进*/,formObj){ 
 nodeCount++;/*节点计数*/ 
 for (var i=0,tab='';i<indent;i++ )tab+=indentChar;/* 缩进HTML */ 
 tab=compress?'':tab;/*压缩模式忽略缩进*/ 
 maxDepth=++indent;/*缩进递增并记录*/ 
 if(value&&value.constructor==Array){/*处理数组*/ 
 draw.push(tab+(formObj?('"'+name+'":'):'')+'['+line);/*缩进'[' 然后换行*/ 
 for (var i=0;i<value.length;i++) 
 notify(i,value[i],i==value.length-1,indent,false); 
 draw.push(tab+']'+(isLast?line:(','+line)));/*缩进']'换行,若非尾元素则添加逗号*/ 
 }else if(value&&typeof value=='object'){/*处理对象*/ 
 draw.push(tab+(formObj?('"'+name+'":'):'')+'{'+line);/*缩进'{' 然后换行*/ 
 var len=0,i=0; 
 for(var key in value)len++; 
 for(var key in value)notify(key,value[key],++i==len,indent,true); 
 draw.push(tab+'}'+(isLast?line:(','+line)));/*缩进'}'换行,若非尾元素则添加逗号*/ 
 }else{ 
 if(typeof value=='string')value='"'+value+'"'; 
 draw.push(tab+(formObj?('"'+name+'":'):'')+value+(isLast?'':',')+line); 
 }; 
 }; 
 var isLast=true,indent=0; 
 notify('',data,isLast,indent,false); 
 return draw.join(''); 
 }

format(json,true);表示压缩json字符串。

format(json,false);表示格式化json字符串。

本站发布的文章及附件仅限用于学习和研究目的;不得将上述内容用于商业或非法用途,否则后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。

如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

本文链接: https://www.cmezy.com/blog/json/

文本链接:js解析json数据格式化及压缩方法

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:创梦源码 谢谢

 

评论0

请先

没有账号? 忘记密码?