在網站建設中,我們經常會用到ajax進行無刷新交互對頁面進行數據的改變或展示,其中我們最常使用的交互數據類型是json。
今天,我在使用的時候就犯了一個json解析的錯誤。
//json是後臺傳過來的json格式的數據
var obj2=eval(json);//eval()方法對json數組進行解析成對象,然後通過對象-屬性的方式獲取其中的值
alert(obj2.property);//發現alert的結果爲undefined
找了一些資料才知道,原來是eval()方法的用法不對,正確的寫法應該如下
//json是後臺傳過來的json格式的數據
var obj2=eval("("+json+")");//eval()方法對json數組進行解析成對象,然後通過對象-屬性的方式獲取其中的值
alert(obj2.property);//打印出正確的值
爲什麼eval(“(“+json+”)”)
eval本身的問題。 由於json可能是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表達式。
加上圓括號的目的是迫使eval函數在處理JavaScript代碼的時候強制將括號內的表達式(expression)轉化爲對象,而不是作爲語句(statement)來執行。