最近在使用eval轉(zhuǎn)換json數(shù)據(jù)的時候,遇到了一個問題,就是在解析json數(shù)據(jù)中缺少了左括號“(”導(dǎo)致報錯。下面是我遇到的問題和解決方法:
var json = eval('{"name": "Lucy", "age": "18"}'); console.log(json);
上述代碼看起來沒有什么問題,但是實(shí)際上在執(zhí)行的時候會報錯“Uncaught SyntaxError: Unexpected token :”。
這是因?yàn)槲覀冊谑褂胑val函數(shù)解析json數(shù)據(jù)時,需要將json數(shù)據(jù)放在一個左右括號中,就像這樣:
var json = eval('({'name": "Lucy", "age": "18"})'); console.log(json);
這里我們在括號中放入了json數(shù)據(jù),解析時就不會出現(xiàn)語法錯誤了。這種做法的原因是,在JavaScript中,括號可以將一個對象定義為一個表達(dá)式,而eval函數(shù)只接受表達(dá)式作為參數(shù)。
在實(shí)際開發(fā)中,我們不建議使用eval函數(shù)來解析JSON數(shù)據(jù),因?yàn)閿?shù)據(jù)來源不可靠時,可能會導(dǎo)致注入攻擊等安全問題。因此,我們可以使用JSON.parse()函數(shù)來代替eval函數(shù):
var json = JSON.parse('{"name": "Lucy", "age": "18"}'); console.log(json);
JSON.parse()函數(shù)更加安全可靠,也更符合語法規(guī)范。
上一篇byte怎么存放json
下一篇5.什么是css