当前浏览器不支持canvas,请更换浏览器后再试

格式化Json代码

function formatJson(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('');   
}
formatJson('txt',compress)

///////////////////////////
export function formatJson(txt, compress /*是否为压缩模式*/) {
  /* 格式化JSON源码(对象转换为JSON文本) */
  var indentChar = '    ';
  if (/^\s*$/.test(txt)) {
    // alert('数据为空,无法格式化! ');
    return;
  }
  try {
    var data = eval('(' + txt + ')');
  } catch (e) {
    // alert('数据源语法错误,格式化失败! 错误信息: ' + e.description, 'err');
    return;
  }
  let draw = [];
  // last = false,
  // This = this,
  let line = compress ? '' : '\n';
  // let nodeCount = 0;
  // let 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; /*缩进递增并记录*/
    ++indent;
    if (value && value.constructor == Array) {
      /*处理数组*/
      draw.push(tab + (formObj ? '"' + name + '":' : '') + '[' + line); /*缩进'[' 然后换行*/
      for (let 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;
      let i = 0;
      // for (let key in value) {
      //   len++;
      // }
      for (let key in value) {
        len++;
        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('');
}
 
 

 

posted @ 2021-01-25 16:14  高亮uncle  阅读(353)  评论(0编辑  收藏  举报