zoukankan      html  css  js  c++  java
  • js处理 json数据代码格式化

    function jsonFormat(txt, tiperror, compress/*是否为压缩模式*/) {/* 格式化JSON源码(对象转换为JSON文本) */
        var indentChar = '    ';
        if (/^s*$/.test(txt)) {
            if (tiperror)
                alert('数据为空,无法格式化! ');
            return;
        }
        // 替换
     换行
        txt=txt.replace(/\r/g,"CRAPAPI_R"); 
        txt=txt.replace(/\n/g,"CRAPAPI_N"); 
        txt=txt.replace(/\t/g,"CRAPAPI_T"); 
        var data;
        try {
            data=$.parseJSON(txt);
        } catch (e) {
            if (tiperror)
                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.replace(/"/gm, '\"');
                    // 替换
     换行
                    value=value.replace(/CRAPAPI_R/g,"\r"); 
                      value=value.replace(/CRAPAPI_N/g,"\n"); 
                      value=value.replace(/CRAPAPI_T/g,"\t"); 
    
                    value = '"' + value + '"';
                }
                draw.push(tab + (formObj ? ('"' + name + '":') : '') + value
                        + (isLast ? '' : ',') + line);
            }
            ;
        };
        var isLast = true, indent = 0;
        notify('', data, isLast, indent, false);
        return draw.join('');
    }
  • 相关阅读:
    centos7.6 使用yum安装mysql5.7
    解决hadoop本地库问题
    docker-compose 启动警告
    docker 安装zabbix5.0 界面乱码问题解决
    docker 部署zabbix问题
    zookeeper 超时问题
    hbase regionserver异常宕机
    (转载)hadoop 滚动升级
    hadoop Requested data length 86483783 is longer than maximum configured RPC length
    zkfc 异常退出问题,报错Received stat error from Zookeeper. code:CONNECTIONLOSS
  • 原文地址:https://www.cnblogs.com/Doduo/p/14187732.html
Copyright © 2011-2022 走看看