JSON.parse(jsonStr)和eval('('+jsonStr+')')
我們先初始化一個json格式的對象:
var jsonDate = ‘{ "name":"周星馳","age":23 }‘
var jsonObj = eval( ‘(‘ + jsonDate + ‘)‘ ); // eval();方法
var jsonObj = JSON.parse( jsonDate ); // JSON.parse(); 方法
然後在控制臺調用:
console.log( jsonObj.name ); // 兩種方法都可以正確輸入 周星馳
那麽問題來了 兩種方法有什麽區別呢?(下面我們稍微把代碼改動一下,藍色字體為修改部分)
var jsonDate = ‘{ "name":alert("hello"),"age":23 }‘
var jsonObj = eval( ‘(‘ + jsonDate + ‘)‘ ); // eval();方法
console.log( jsonObj.age ); //會先執行“alert”輸出“hello” 然後才輸出 23
換“JSON.parse();”方法:
var jsonDate = ‘{ "name":alert("hello"),"age":23 }‘
var jsonObj = JSON.parse( jsonDate ); // JSON.parse(); 方法
cosole.log( jsonobj.age ) // 報錯 這個錯誤告訴我們這個字符串是不合法的
小結:“eval();”方法解析的時候不會去判斷字符串是否合法,而且json對象中的js方法也會被執行,這是非常危險的;而“JSON.parse();”方法的優點就不用多說了,推薦此方法。
JSON.parse(jsonStr)和eval('('+jsonStr+')')