jsonUtils.js 4.34 KB


var html_elements={
    br:"<br/>"
}
var formatJson = function(json, options) {
    var reg = null,
        formatted = '',
        pad = 0,
        PADDING = '&nbsp;&nbsp;&nbsp;&nbsp;'; // one can also use '\t' or a different number of spaces
  
    // optional settings
    options = options || {};
    // remove newline where '{' or '[' follows ':'
    options.newlineAfterColonIfBeforeBraceOrBracket = (options.newlineAfterColonIfBeforeBraceOrBracket === true) ? true : false;
    // use a space after a colon
    options.spaceAfterColon = (options.spaceAfterColon === false) ? false : true;
  
    // begin formatting...
    if (typeof json !== 'string') {
        // make sure we start with the JSON as a string
        json = JSON.stringify(json);
    } else {
        // is already a string, so parse and re-stringify in order to remove extra whitespace
        json = JSON.parse(json);
        json = JSON.stringify(json);
    }
  
    // add newline before and after curly braces
    reg = /([\{\}])/g;
    json = json.replace(reg, '\r\n$1\r\n');
  
    // add newline before and after square brackets
    reg = /([\[\]])/g;
    json = json.replace(reg, '\r\n$1\r\n');
  
    // add newline after comma
    reg = /(\,)/g;
    json = json.replace(reg, '$1\r\n');
  
    // remove multiple newlines
    reg = /(\r\n\r\n)/g;
    json = json.replace(reg, '\r\n');
  
    // remove newlines before commas
    reg = /\r\n\,/g;
    json = json.replace(reg, ',');
  
    // optional formatting...
    if (!options.newlineAfterColonIfBeforeBraceOrBracket) {        
        reg = /\:\r\n\{/g;
        json = json.replace(reg, ':{');
        reg = /\:\r\n\[/g;
        json = json.replace(reg, ':[');
    }
    if (options.spaceAfterColon) {         
        reg = /\:/g;
        json = json.replace(reg, ': ');
    }
  
    $.each(json.split('\r\n'), function(index, node) {
        var i = 0,
            indent = 0,
            padding = '';
  
        if (node.match(/\{$/) || node.match(/\[$/)) {
            indent = 1;
        } else if (node.match(/\}/) || node.match(/\]/)) {
            if (pad !== 0) {
                pad -= 1;
            }
        } else {
            indent = 0;
        }
  
        for (i = 0; i < pad; i++) {
            padding += PADDING;
        }
  
        formatted += padding + node + html_elements.br;
        pad += indent;
    });
  
    return formatted;
};

var jsonUtils={
    formSerializeArrayKey:{
     name:"name",
     value:"value"
    } ,
    toJsonObj:function(_params){
            var _g=this;
            var result={};
            var one_form_data= _params.data;
            var _value;
            //用于给每个名称计数
            var nameCount = {};
            for(var key in one_form_data){
                var obj_name = one_form_data[key][_g.formSerializeArrayKey.name];
                var isArray = false;
                if(!nameCount[obj_name]){
                    nameCount[obj_name]=1;
                }else{
                    nameCount[obj_name] = nameCount[obj_name] + 1;
                    isArray = true;
                }
                _value=one_form_data[key][_g.formSerializeArrayKey.value];
                if(typeof(_value)==="string"){
                    _value=$.trim(_value);
                }
                if(isArray){
                    var _old = result[obj_name];

                    if(_old instanceof Array){
                        _old.push(_value);
                        result[obj_name]=_old;
                    }else{
                        var _arr = new Array();
                        _arr.push(_old);
                        _arr.push(_value);
                        result[obj_name]=_arr;
                    }
                    
                }else{
                    result[obj_name]=_value;
                }         
                
                
            }
            return result;
    },
    formatJson : function(json, options){
        return formatJson(json, options);
    },
    isJson : function(str){
        if (typeof str == 'string') {
            try {
                var obj=JSON.parse(str);
                if(str.indexOf('{')>-1){
                    return true;
                }else{
                    return false;
                }

            } catch(e) {
                console.log(e);
                return false;
            }
        }
        return false;
    }
};