Json字串轉換為JS物件方法

2021-08-25 07:01:12 字數 1229 閱讀 4092

一般json字串轉換為js物件,都使用

var jsonstr="";

var jsonobj = eval("("+jsonstr+")");

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

parsejson: function( data ) 

// 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

if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fa-f])/g, "@")

.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[ee][+\-]?\d+)?/g, "]")

.replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) else

}

這個方法核心的**就是:

(new function("return " + data))();

它使用了function()建構函式。講json字串作為函式執行資料傳入,定義後立即執行該函式,此時這個函式會返回json物件

我做了乙個測試,用這個方法解析json字串的效率要比用eval解析快好幾百倍

var jsonstr ="

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毫秒,太神奇了

java物件轉換為json字串

public static void main string args jsonarray jsonarray.fromobject temparry system.out.println jsonarray.tostring 列印出來的結果 a b c list轉換為json listtempli...

將物件轉換為JSON字串

一 引包 com.alibaba fastjson 1.2.31 二 測試方法 將物件轉化為json字串 test public void objecttojson 三 執行結果如下 diffobjectupdaterulesetlist relationobject objectname 電視 p...

DataTable 轉換為 json 字串

話不多說,上 1 執行sql語句 string sql select from student 2 查詢出的資訊datatable型別 datatable dt executedataset sql tables 0 3 使用json方法轉化為json字串 var jsonstring json d...