源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Json字符串转换为JS对象的高效方法实例

  • 时间:2022-07-17 02:41 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Json字符串转换为JS对象的高效方法实例
今天学习JQuery源码看到一下方法,原来还可以这样解析JSON字符串:
[u]复制代码[/u] 代码如下:
  parseJSON: function( data ) {   if ( typeof data !== "string" || !data ) {    return null;   }   // Make sure leading/trailing whitespace is removed (IE can't handle it)   data = jQuery.trim( data );   // Make sure the incoming data is actual JSON   // Logic borrowed from http://json.org/json2.js   if ( /^[/],:{}/s]*$/.test(data.replace(///(?:["////bfnrt]|u[0-9a-fA-F]{4})/g, "@")    .replace(/"[^"///n/r]*"|true|false|null|-?/d+(?:/./d*)?(?:[eE][+/-]?/d+)?/g, "]")    .replace(/(?:^|:|,)(?:/s*/[)+/g, "")) ) {    // Try to use the native JSON parser first    return window.JSON && window.JSON.parse ?     window.JSON.parse( data ) :     (new Function("return " + data))();   } else {    jQuery.error( "Invalid JSON: " + data );   }  }
这个方法核心的代码就是:
[u]复制代码[/u] 代码如下:
(new Function("return " + data))();
它使用了Function()构造函数。讲json字符串作为函数执行数据传入,定义后立即执行该函数,此时这个函数会返回JSON对象 我做了一个测试,用这个方法解析JSON字符串的效率要比用Eval解析快好几百倍
[u]复制代码[/u] 代码如下:
var jsonStr ="{"; for(var i=0;i<10000;i++){  jsonStr+="a"+i+":"+i+"," } jsonStr = jsonStr.substring(0,jsonStr.length-1); jsonStr+="}"; var date = new Date(); var start = date.getTime() //var boj = (new Function("return "+jsonStr ))(); var boj = eval("("+jsonStr+")"); var date1 = new Date(); console.info(date1.getTime()-start);
我用firfox测试结果,用eval解析花费了7234毫秒,而用函数这种方法,用了55毫秒,太神奇了.
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部