js解析Json字串的方法

2022-02-04 20:11:00 字數 997 閱讀 1047

要把乙個xml字串轉(「1,2,3,4,5,6,7,8,1,2」)換成陣列的形式,每個值都應該是number型別的,想當然的就用了split方法,結果。。。問題來了,伺服器要求陣列的值是數字,而split是字元方法,所產生的陣列也是字串,麻煩來了。。這麼大的資料量總不能乙個乙個的for迴圈parseint吧,想想就頭痛!

天無絕人之路,原來js這麼強大,有很多方法可以解決,只不過是我之前不知道而已,這裡總結下,並簡單的區分下優劣:

1. eval

var arrstr ="["+"1,2,3,4,5"+"]";

eval(arrstr);

//eval方法是js的全域性方法,接收字串,返回字串的值並執行其中的**。

2. new function

var arr = new function("return "+arrstr)();

alert(arr);

//通過alert可以看出arr輸出[1,2,3,4,5],通過建立匿名函式並執行的方法將字串轉換成陣列,完成字元解析,該方法只接受字串。

3.native

var arr=json.parse(arrstr);

alert(arr);

方法是瀏覽器的原生方法,目前在chrome,firefox 3.6+,ie 8+,safari 5+,opera都具有良好的支援,是上述幾種方法中執行效率最高的方法。

幾種方法的執行效率比較如下,firefox如果把firebug等addon都去掉的話eval效率會高很多,下圖是乙個比較老的比較結果,現在的chrome瀏覽器,safari瀏覽器,opera,firefox,ie都已經支援了json.parse方法:

通常情況下盡量避免使用eval方法和new function方法,推薦使用json原生方法,如果必須要使用eval和new function二選一的話,那就使用new function方法。

js解析json js解析json字串

js解析json js解析json字串 var t phonenumbers 425 777 7777 206 777 7777 var jsonobj eval t alert jsonobj.firstname alert jsonobj.lastname var t2 var myobj ev...

JSON字串解析

一 json物件 js可以按以下方式定義物件 varobj 這樣就定義了物件 obj,它有兩個公共屬性id和name,可以用 obj.id 的方式直接訪問其屬性值。從伺服器獲取資料時往往不止乙個物件,這就需要用到物件陣列,js中物件陣列可以用 來定義,如下 varobjs alert objs 0 ...

json字串解析

有時儲存在資料庫的資料是一串json字串,需要進行讀取的時候就需要解析操作。簡單介紹兩種 1 net.sf.json.2 com.alibaba.fastjson.第一種使用方式 import net.sf.json.jsonarray import net.sf.json.jsonexceptio...