首頁 > web前端 > js教程 > Json字串轉換為JS物件的高效方法實例_javascript技巧

Json字串轉換為JS物件的高效方法實例_javascript技巧

WBOY
發布: 2016-05-16 17:34:54
原創
815 人瀏覽過

今天學習JQuery原始碼看到一下方法,原來還可以這樣解析JSON字串:

複製程式碼 程式碼如下:

  parseJSON: function( data ) {
  if ( typeof data !== "string" || !data ) {
  returnd null;  // Make sure leading/trailing whitespace is removed (IE can't handle it)  data = jQuery.trim( data );


 🎜>  // 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) :  ))();


  } else {
   jQuery.error( "Invalid JSON: " data );
  }

 }



這個方法的程式碼是:

複製程式碼

程式碼如下:(new Function("return " data))();它使用了Function()建構子。講json字串作為函數執行資料傳入,定義後立即執行函數,此時這個函數會回傳JSON物件
我做了一個測試,用這個方法解析JSON字串的效率要比用Eval解析快好幾百倍


複製程式碼


複製程式碼 代碼如下:
var jsonStr ="{";
for(var i=0;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毫秒,太神奇了.

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板