前端经常遇到要处理后台返回的JSON数据,并且希望能够按照一定格式进行展示,便于读者查看.此方法便可以进行操作
let txt='[{"sender":"tuser1","agentid":"","ip":"*"}, {"sender":"tuser2","agentid":"","ip":"*"} ]' fomatJson=(txt,false)=>{
//数据json格式化 ------------------txt即为json数据 console.log('数据进入! '); var indentChar = ' '; if(/^\s*$/.test(txt)){ console.log('数据为空,无法格式化! '); this.setState({ errmsg:"数据为空,无法格式化!", goGame:false, }) return; } try{ var data=eval('('+txt+')'); this.setState({ errmsg:"", goGame:true, }) } catch(e){ this.setState({ errmsg:"数据格式错误,请仔细检查!", goGame:false, }) console.log('数据源语法错误,格式化失败! 错误信息: '+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
/* 缩进HTML */ tab=compress?
'':tab;
/*压缩模式忽略缩进*/ maxDepth=++indent;
/*缩进递增并记录*/
if(value&&value.constructor==Array){
/*处理数组*/ draw.push(tab+(formObj?(
'"'+name+
'":'):
'')+
'['+line);
/*缩进'[' 然后换行*/
for (
var i=
0;i
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);
console.log(
"显示的文字",draw,draw.join(
'')) }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/216968.html原文链接:https://javaforall.net
