Heim > Web-Frontend > js-Tutorial > Json字符串转换为JS对象的高效方法实例_javascript技巧

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-05-16 17:34:54
Original
859 Leute haben es durchsucht

今天学习JQuery源码看到一下方法,原来还可以这样解析JSON字符串:

复制代码 代码如下:

  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 );
  }
 }


这个方法核心的代码就是:
复制代码 代码如下:

(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毫秒,太神奇了.
Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Aktuelle Ausgaben
Holen: JSON-Daten übertragen
Aus 1970-01-01 08:00:00
0
0
0
MySQL-Speicher-JSON-Fehler
Aus 1970-01-01 08:00:00
0
0
0
Finden Sie passende Ganzzahlen in JSON.
Aus 1970-01-01 08:00:00
0
0
0
PHP-JSON-Konvertierung
Aus 1970-01-01 08:00:00
0
0
0
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage