json解析字符串

最近在作毕时遇到的问题,在些记录下:

 

客户端可通过如下提供的三种方式进行解析字符串

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <title>Parse JsonString</title> 
    </head> 
    <body> 
        <div id="consoleRegion"></div> 
        <script type="text/javascript"> 
            //yui 
            var Browser = function() { 
                var o = { 
                    ie: 0, 
                    opera: 0, 
                    gecko: 0, 
                    webkit: 0 
                }; 
                var ua = navigator.userAgent, m; 
                if ( ( /KHTML/ ).test( ua ) ) { 
                    o.webkit = 1; 
                } 
                // Modern WebKit browsers are at least X-Grade 
                m = ua.match(/AppleWebKit\/([^\s]*)/); 
                if (m&&m[1]) { 
                    o.webkit=parseFloat(m[1]); 
                } 

                if (!o.webkit) { // not webkit 
                    // @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr) 
                    m=ua.match(/Opera[\s\/]([^\s]*)/); 
                    if (m&&m[1]) { 
                        o.opera=parseFloat(m[1]); 
                    } else { // not opera or webkit 
                        m=ua.match(/MSIE\s([^;]*)/); 
                        if (m&&m[1]) { 
                            o.ie=parseFloat(m[1]); 
                        } else { // not opera, webkit, or ie 
                            m=ua.match(/Gecko\/([^\s]*)/); 
                            if (m) { 
                                o.gecko=1; // Gecko detected, look for revision 
                                m=ua.match(/rv:([^\s\)]*)/); 
                                if (m&&m[1]) { 
                                    o.gecko=parseFloat(m[1]); 
                                } 
                            } 
                        } 
                    } 
                } 
                return o; 
            }(); 

            var Console = { 
                consoleRegion: null, 

                getRegion: function() { 
                    if ( this.consoleRegion === null ) { 
                        this.consoleRegion = document.getElementById( "consoleRegion" ); 
                    } 
                    return this.consoleRegion; 
                }, 

                output: function( text ) { 

                    this.getRegion().innerHTML += "<br/>" + text; 

                } 
            }; 
            //test code 
            var count = 10000, o = null, i = 0, jsonString = '{"value":{"items": [{"x":1,"y":2,"z":3}, {"x":1,"y":2,"z":3}, {"x":1,"y":2,"z":3}, {"x":1,"y":2,"z":3}, {"x":1,"y":2,"z":3}]},"error":null}'; 
            //eval 
            var beginTime = new Date(); 
            for ( i = 0; i < count; i++ ) { 
                o = eval( "(" + jsonString + ")" ); 
            } 
            Console.output( "eval:" + ( new Date() - beginTime ) ); 
            //new Function 
            beginTime = new Date(); 
            for ( i = 0; i < count; i++ ) { 
                o = new Function( "return " + jsonString )(); 
            } 
            Console.output( "new Function:" + ( new Date() - beginTime ) ); 
            //native 
            if ( typeof JSON !== "undefined" ) { 
                beginTime = new Date(); 
                for ( i = 0; i < count; i++ ) { 
                    o = JSON.parse( jsonString ); 

                } 
                Console.output( "native:" + ( new Date() - beginTime ) ); 
            } else { 
                Console.output( "native:not support!" ); 
            } 
            //wrapper 
            var __json = null; 
            if ( typeof JSON !== "undefined" ) { 
                __json = JSON; 
            } 
            var browser = Browser; 
            var JSON = { 
                parse: function( text ) { 
                    if ( __json !== null ) { 
                        return __json.parse( text ); 
                    } 
                    if ( browser.gecko ) { 
                        return new Function( "return " + text )(); 
                    } 
                    return eval( "(" + text + ")" ) 
                } 
            };           
            beginTime = new Date(); 
            for ( i = 0; i < count; i++ ) { 
                o = JSON.parse( jsonString ); 

            } 
            Console.output( "wrapper:" + ( new Date() - beginTime ) ); 
            //alert( o.value.items[0].z ); 
        </script>
</body>
</html>


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值