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

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

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

js解析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字符串。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/241462.html

(0)
上一篇 2022年4月7日
下一篇 2022年4月7日

相关推荐

发表回复

登录后才能评论