zoukankan      html  css  js  c++  java
  • array2json

     原文:jQuery方法扩展:type, toJSON, evalJSON. http://zhkac.iteye.com/blog/499330 .2013-05-19

    (function($) { 
        // the code of this function is from  
        // http://lucassmith.name/pub/typeof.html 
        $.type = function(o) { 
            var _toS = Object.prototype.toString; 
            var _types = { 
                'undefined': 'undefined', 
                'number': 'number', 
                'boolean': 'boolean', 
                'string': 'string', 
                '[object Function]': 'function', 
                '[object RegExp]': 'regexp', 
                '[object Array]': 'array', 
                '[object Date]': 'date', 
                '[object Error]': 'error' 
            }; 
            return _types[typeof o] || _types[_toS.call(o)] || (o ? 'object' : 'null'); 
        }; 
        // the code of these two functions is from mootools 
        // http://mootools.net 
        var $specialChars = { '': '\b', '	': '\t', '
    ': '\n', 'f': '\f', '
    ': '\r', '"': '\"', '\': '\\' }; 
        var $replaceChars = function(chr) { 
            return $specialChars[chr] || '\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16); 
        }; 
        $.toJSON = function(o) { 
            var s = []; 
            switch ($.type(o)) { 
                case 'undefined': 
                    return 'undefined'; 
                    break; 
                case 'null': 
                    return 'null'; 
                    break; 
                case 'number': 
                case 'boolean': 
                case 'date': 
                case 'function': 
                    return o.toString(); 
                    break; 
                case 'string': 
                    return '"' + o.replace(/[x00-x1f\"]/g, $replaceChars) + '"'; 
                    break; 
                case 'array': 
                    for (var i = 0, l = o.length; i < l; i++) { 
                        s.push($.toJSON(o[i])); 
                    } 
                    return '[' + s.join(',') + ']'; 
                    break; 
                case 'error': 
                case 'object': 
                    for (var p in o) { 
                        s.push(p + ':' + $.toJSON(o[p])); 
                    } 
                    return '{' + s.join(',') + '}'; 
                    break; 
                default: 
                    return ''; 
                    break; 
            } 
        }; 
        $.evalJSON = function(s) { 
            if ($.type(s) != 'string' || !s.length) return null; 
            return eval('(' + s + ')'); 
        }; 
    })(jQuery); 
  • 相关阅读:
    Vitrualbox虚拟机网络设置
    挂接命令(mount) 【转】
    ubuntu Error mounting /dev/sda6 at /media/xxx...
    mysql命令[转]
    fopen参数
    fprintf&prinft&sprintf
    UNIX 网络编程知识,函数积累
    vim 括号自动补全
    CDbConnection failed to open the DB connection
    [Android_蓝牙]Android4.0蓝牙使能的详细解析
  • 原文地址:https://www.cnblogs.com/ccdc/p/3087987.html
Copyright © 2011-2022 走看看