一、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字元串的非常嚴格