Ajax中解析Json的兩種方法對比分析
eval(); //此方法不推薦
JSON.parse(); //推薦方法
一、兩種方法的區(qū)別
我們先初始化一個json格式的對象:
var jsonDate = '{ "name":"周星馳","age":23 }' var jsonObj = eval( '(' + jsonDate + ')' ); // eval();方法 var jsonObj = JSON.parse( jsonDate ); // JSON.parse(); 方法
然后在控制臺調(diào)用:
console.log( jsonObj.name ); // 兩種方法都可以正確輸入 周星馳
那么問題來了 兩種方法有什么區(qū)別呢?(下面我們稍微把代碼改動一下,藍(lán)色字體為修改部分)
var jsonDate = '{ "name":alert("hello"),"age":23 }' var jsonObj = eval( '(' + jsonDate + ')' ); // eval();方法 console.log( jsonObj.age ); //會先執(zhí)行“alert”輸出“hello” 然后才輸出 23
換“JSON.parse();”方法:
var jsonDate = '{ "name":alert("hello"),"age":23 }' var jsonObj = JSON.parse( jsonDate ); // JSON.parse(); 方法 cosole.log( jsonobj.age ) // 報錯 這個錯誤告訴我們這個字符串是不合法的
小結(jié):“eval();”方法解析的時候不會去判斷字符串是否合法,而且json對象中的js方法也會被執(zhí)行,這是非常危險的;而“JSON.parse();”方法的優(yōu)點就不用多說了,推薦此方法。(不明白的盆友可以自己在控制臺測試一下)
二、擴(kuò)展問題
var jsonDate = '{ "name":"周星馳","age":23 }'
大家可以看到在上面測試時一直用紅色把包在花括號外面的引號標(biāo)注了起來,這對引號是很關(guān)鍵卻又是常常被忽略的,因為 “eval();” 和 “JSON.parser();” 這兩個方法的參數(shù)只接受字符串,也就是說只能解析字符串!!
那我不經(jīng)會有一個思考,我們在初始化的時候若不加引號對,那么它本身就是對象,js可以直接獲取對象本身的屬性和方法;為什么還要加引號將它變成字符串之后再用 “eval();” 或者 “JSON.parse();” 解析,這樣做不是既不環(huán)保又沒有效率嗎?
原因很簡單:前端提供給后臺的只能是字符串?dāng)?shù)據(jù)格式,后臺返回給前臺的就看返回的是什么數(shù)據(jù)格式,是字符串就必須解析之后再用。
(這個小問題一般大家都會忽略掉,不太關(guān)注。我之所以好奇的原因也是因為對后臺了解的不夠,把這個問題拋出來希望對后臺不熟的朋友有所幫助,知道是怎么回事后自然而然會加深記憶,在開發(fā)過程中就不會漏掉了)
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
- Jquery ajax不能解析json對象,報Invalid JSON錯誤的原因和解決方法
- 淺析ajax請求json數(shù)據(jù)并用js解析(示例分析)
- php+mysql結(jié)合Ajax實現(xiàn)點贊功能完整實例
- PHP+jQuery+Ajax實現(xiàn)多圖片上傳效果
- php+ajax+jquery實現(xiàn)點擊加載更多內(nèi)容
- jQuery+AJAX實現(xiàn)無刷新下拉加載更多
- jQuery+Ajax+PHP+Mysql實現(xiàn)分頁顯示數(shù)據(jù)實例講解
- jquery與php結(jié)合實現(xiàn)AJAX長輪詢(LongPoll)
- jQuery+AJAX實現(xiàn)遮罩層登錄驗證界面(附源碼)
- 比較Ajax的三種實現(xiàn)及JSON解析
相關(guān)文章
js+json用表格實現(xiàn)簡單網(wǎng)站左側(cè)導(dǎo)航
閑暇之余,制作一用表格實現(xiàn)的簡單的網(wǎng)站導(dǎo)航條,分享給大家。這里的數(shù)據(jù)基于json格式,學(xué)習(xí)json的朋友可以參考下。2010-04-04使Ext的Template可以解析二層的json數(shù)據(jù)的方法
2007-12-12Json對象與Json字符串互轉(zhuǎn)(4種轉(zhuǎn)換方式)
Json字符與Json對象的相互轉(zhuǎn)換方式有很多,接下來將為大家一一介紹下,感興趣的朋友可以參考下哈,希望可以幫助到你2013-03-03