亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript JSON.parse和eval的區別

javascript JSON.parse和eval的區別

MMTTMM 2019-05-14 09:08:04
javascript JSON.parse和eval的區別
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

JSON.parse()用來將標準json字符串轉換成js對象;
eval()除了可以將json字符串(非標準的也可以,沒有JSON.parse()要求嚴格)轉換成js對象外還能用來動態執行js代碼。
例如:JSON.parse('{"name":"張三"}')能被成功轉換,但是JSON.parse('{name:"張三"}')、JSON.parse('{\'name\':"張三"}')和JSON.parse('{"name":\'張三\'}')都是不能轉換的;然而后面那三個可用用eval()來轉換;另外eval()還能執行js代碼,如:eval('alert("你好!")');

查看完整回答
反對 回復 2019-05-15
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

JSON(JavaScript Object Notation)是一種輕量級的數據格式,采用完全獨立于語言的文本格式,是理想的數據交換格式。同時,JSON是Javascript原生格式,這意味著在javascript中處理JSON數據
基本格式:

varjsonData='{"data1":"Hello,","data2":"world!"}'

調用方法jsonData.data1,jsonData.data2
很多json數據存入數組

var jsonData=[
{"name":"LiLei","age":19,"sex":"male"},
{"name":"HanMei","age":18,"sex":"famale"}
]

調用方法jsonData[0].name,jsonData[1].sex
總體而言,json是相對比較容易的理解和使用的,但同時存在很多的陷阱,如果不注意的話很容易掉進去。
json的的解析方法
json的解析方法共有兩種:eval() 和 JSON.parse(),使用方法如下:

var jsonData = '{"data1":"Hello,", "data2":"world!}';
var evalJson=eval('('+jsonData+')');
var jsonParseJson=JSON.parse(jsonData);

這樣就把jsonData這個json格式的字符串轉換成了JSON對象。
二者的區別如下:

var value = 1;
var jsonstr = '{"data1":"hello","data2":++value}';
var data1 = eval_r('('+jsonstr+')');
console.log(data1);//這時value值為2
var data2=JSON.parse(jsonstr);
console.log(data2);//報錯

可以看到控制輸出臺的結果,第一個eval()順利執行,第二個報錯了。從上例就可以明顯地看出,eval在解析字符串時,會執行該字符串中的代碼(這樣的后果是相當惡劣的),如上例中,由于用eval解析一個json字符串而造成原先的value的值改變。




查看完整回答
反對 回復 2019-05-15
  • 2 回答
  • 0 關注
  • 315 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號