天天看點

js jquery前台解析json字元串

一、js解析json字元串

eval()和json.parse()

對于伺服器傳回的json字元串,如果jquery異步請求沒做類型說明,或者以字元串方式接受,那麼需要做一次對象化處理,就是将該字元串放于eval()中執行一次。這種方式也适合以普通javascipt方式擷取json對象,以下舉例說明:

為什麼eval這裡要添加 "("+data+")"呢?

原因在于:eval本身的問題。 由于json是以”{}”的方式來開始以及結束的,在js中,它會被當成一個語句塊來處理,是以必須強制性的将它轉換成一種表達式。

加上圓括号的目的是迫使eval函數在處理javascript代碼的時候強制将括号内的表達式(expression)轉化為對象,而不是作為語句(statement)來執行。舉一個例子,例如對象字面量{},如若不加外層的括号,那麼eval會将大括号識别為javascript代碼塊的開始和結束标記,那麼{}将會被認為是執行了一句空語句。是以下面兩個執行結果是不同的:

alert(eval("{}")); // undefined

alert(eval("({})"));//  [object object]

json.parse()  json字元串的格式要求非常嚴格,屬性名稱必須是用雙引号“”括起來,并且不能用單引号。

二、jquery解析json字元串

或者

$.parsejson和json.parse一樣json字元串的非常嚴格

繼續閱讀