• javascript parseJSON


    解析json:

    前台和后台做ajax交互,后台返回的json字符串,我之前都是通过eval来解析,后来慢慢的知道eval这货是魔鬼eval要尽量避免,是出于安全考虑,因为eval过于强大,他可以把string串作为代码执行。如果控制不好就会造成安全漏洞。

    所以ECMA推出了JSON.parse,通过这个名字大概可以看出这货是用来解析json的,JSON.parse详细介绍请参考这个地址:http://technet.microsoft.com/zh-cn/sysinternals/cc836466%28en-us,VS.85%29.aspx,通过API可以看到JSON.parse在IE6,7下是不兼容的。

    解决兼容:

    刚刚提到了JSON.parse在IE6,7下是不兼容,解决办法如下:

    解决办法1:可以通过引入json2.js一个文件,json2.js下载及插件详细介绍请参考这个地址:http://www.cnblogs.com/youring2/archive/2013/03/01/2938850.html。

    解决办法2:众所周知jQueryAPI里有一个parseJSON方法,parseJSON也是用来解析json字符串的,具体的我就不多做介绍了,如有没见过的同学可以去看一下jQueryAPI,我去看了一下parseJSON源码,看了之后借鉴parseJSON源码,写了一个解析json函数,先看一下运行结果吧:

    IE7下妥妥的,由于我这里没有IE6,有IE6的同学可以自己去测试,下面给给大家上代码:

    var parseJSON = function(data){
        
        var rValidtokens = /"[^"\
    
    ]*"|true|false|null|-?d+(?:.d*)?(?:[eE][+-]?d+)?/g,  
            rValidchars = /^[],:{}s]*$/,
            rValidbraces = /(?:^|:|,)(?:s*[)+/g,
            rValidescape = rValidescape = /\(?:["\/bfnrt]|u[0-9a-fA-F]{4})/g;
        if(window.JSON && window.JSON.parse){
            return window.JSON.parse(data);
        }
        if ( rValidchars.test( data.replace( rValidescape, '@' )
            .replace( rValidtokens, ']' )
            .replace( rValidbraces, '')) ) {
    
            return (new Function( 'return ' + data ))();
        }
        
    }
    var str = '{"name":"carl","age":"24","sex":"man"}';
    var obj = parseJSON(str);
    alert(obj.name);

    如果什么不对的地方,欢迎大家积极拍砖指导!

  • 相关阅读:
    Github地址
    第三次冲刺12.16
    第三次冲刺12.07~12.15
    第二次冲刺11.24~12.03
    第十天
    照片
    最终总结
    app的推广
    第三个Sprint冲刺事后诸葛亮报告
    第三个Sprint团队贡献分
  • 原文地址:https://www.cnblogs.com/fengzekun/p/3940918.html
Copyright © 2020-2023  润新知