zoukankan      html  css  js  c++  java
  • 格式化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?'':'
    ',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 ? '' : ' ';
      // 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('');
    }
     
     
  • 相关阅读:
    [LeetCode] Search a 2D Matrix
    [LeetCode] Merge Sorted Array
    [LeetCode] Remove Duplicates from Sorted Array
    [LeetCode] Convert Sorted Array to Binary Search Tree
    [LeetCode] Remove Element
    [LeetCode] Search Insert Position
    [LeetCode] Remove Duplicates from Sorted List
    [LeetCode] Merge Two Sorted Lists
    [LeetCode] Best Time to Buy and Sell Stock II
    [LeetCode] Reverse Integer
  • 原文地址:https://www.cnblogs.com/gluncle/p/14325787.html
Copyright © 2011-2022 走看看