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('');
    }
  • 相关阅读:
    qml 无边框
    Qt 参考链接
    QPushButton QSS
    Head First设计模式之备忘录模式
    Head First设计模式之访问者模式
    Head First设计模式之状态模式
    web打印总结
    Head First设计模式之单例模式
    .Net IOC框架入门之一 Unity
    第五章 MVC之Bundle详解
  • 原文地址:https://www.cnblogs.com/Doduo/p/14187732.html
Copyright © 2011-2022 走看看