老版本mootools封装的JSON处理问题

由于老版本mootools框架里封装了个JSON
导致不能使用自带的JSON.stringify和JSON.parse方法
但是项目又比较老 不好升级mootools 
临时解决方法:
搜索

return eval("("+string+")")}});Native.implement

替换为

return eval("("+string+")")},stringify:JSON.stringify,parse:JSON.parse,});Native.implement

其实就是加上stringify、parse方法

var JSON = new Hash({
    $specialChars: {
        "\b": "\\b",
        "\t": "\\t",
        "\n": "\\n",
        "\f": "\\f",
        "\r": "\\r",
        '"': '\\"',
        "\\": "\\\\"
    },
    $replaceChars: function(A) {
        return JSON.$specialChars[A] || "\\u00" + Math.floor(A.charCodeAt() / 16).toString(16) + (A.charCodeAt() % 16).toString(16)
    },
    encode: function(B) {
        switch ($type(B)) {
            case "string":
                return '"' + B.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';
            case "array":
                return "[" + String(B.map(JSON.encode).filter($defined)) + "]";
            case "object":
            case "hash":
                var A = [];
                Hash.each(B, function(E, D) {
                    var C = JSON.encode(E);
                    if (C) {
                        A.push(JSON.encode(D) + ":" + C)
                    }
                });
                return "{" + A + "}";
            case "number":
            case "boolean":
                return String(B);
            case false:
                return "null"
        }
        return null
    },
    decode: function(string, secure) {
        if ($type(string) != "string" || !string.length) {
            return null
        }
        if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, "@").replace(/"[^"\\\n\r]*"/g, ""))) {
            return null
        }
        return eval("(" + string + ")")
    }
});
var JSON = new Hash({
    $specialChars: {
        "\b": "\\b",
        "\t": "\\t",
        "\n": "\\n",
        "\f": "\\f",
        "\r": "\\r",
        '"': '\\"',
        "\\": "\\\\"
    },
    $replaceChars: function(A) {
        return JSON.$specialChars[A] || "\\u00" + Math.floor(A.charCodeAt() / 16).toString(16) + (A.charCodeAt() % 16).toString(16)
    },
    encode: function(B) {
        switch ($type(B)) {
            case "string":
                return '"' + B.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';
            case "array":
                return "[" + String(B.map(JSON.encode).filter($defined)) + "]";
            case "object":
            case "hash":
                var A = [];
                Hash.each(B, function(E, D) {
                    var C = JSON.encode(E);
                    if (C) {
                        A.push(JSON.encode(D) + ":" + C)
                    }
                });
                return "{" + A + "}";
            case "number":
            case "boolean":
                return String(B);
            case false:
                return "null"
        }
        return null
    },
    decode: function(string, secure) {
        if ($type(string) != "string" || !string.length) {
            return null
        }
        if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, "@").replace(/"[^"\\\n\r]*"/g, ""))) {
            return null
        }
        return eval("(" + string + ")")
    },
    stringify: JSON.stringify,
    parse: JSON.parse,
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值