Javascript 将 JSON 转换为字符串

阅读(2763)

默认使用 JSON.stringify 完成转换,对不支持此方法的浏览器做了兼容。

/**
 * 转义特殊字符
 */
function escString(str) {
    var m = {
            '\\\\'  : /\\/g,
            '\\/'   : /\//g,
            '\\n'   : /\n/g,
            ''      : /\r/g,
            '\\t'   : /\t/g,
            '\\\''  : /\x27/g,
            '\\"'    : /\x22/g
        };
    
    str = str.toString();
    for(var x in m) {
        str = str.replace(m[x], x);
    }

    return str;
};

/**
 * 将 JSON 转换为字符串
 */
function stringifyJSON(obj) {
    var t, sw;

    if (typeof(obj) == 'object') {
        if(obj === null){ return 'null'; }

        if(window.JSON && window.JSON.stringify){
            return JSON.stringify(obj);
        }

        // 是否为数组
        sw = Object.prototype.toString.call(obj).slice(8, -1).toLowerCase()=='array';
        t = [];
        for (var i in obj) {
            t.push((sw ? "" : ("\"" + escString(i) + "\":")) + stringifyJSON(obj[i]));
        }
        t = t.join();
        return sw ? ("["+t+"]") : ("{"+t+"}");
    } else if (typeof(obj) == 'undefined') {
        return 'undefined';
    } else if (typeof(obj) == 'number' || typeof(obj) == 'function') {
        return obj.toString();
    }
    return !obj ? "\"\"" : ("\"" + escString(obj) + "\"");
};

Tags: json