麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > JavaScript > 正文

JSON在Javascript中的使用(eval和JSON.parse的區(qū)別)詳細(xì)解析

2019-11-19 15:33:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

 JSON 和XML比較

json的長(zhǎng)度和xml比起來(lái)更加短小

json讀取速度更快

json可以使用JavaScript的內(nèi)置方法直接進(jìn)行解析,轉(zhuǎn)化成javascript對(duì)象,非常方便。

在Javascript使用eval將接送轉(zhuǎn)化為json對(duì)象

var jsonData = '{"persons":{"name":"成龍","age":58},{"name":"吳京","age":33},"name":"甄子丹","age":44}';var jsonObj = eval('('+jsonData+')');//訪問(wèn)json對(duì)象數(shù)組的第一個(gè)對(duì)象的name屬性console.log(jsonObj.persons[0].name);

在Javascript使用JSON.parse將接送轉(zhuǎn)化為json對(duì)象

var jsonData = '{"persons":{"name":"成龍","age":58},{"name":"吳京","age":33},"name":"甄子丹","age":44}';var jsonObj = JSON.parse(jsonData);//訪問(wèn)json對(duì)象數(shù)組的第一個(gè)對(duì)象的name屬性console.log(jsonObj.persons[0].name);

但是eval方法很不安全,例如:

var jsonData = '{"persons":{"name":"成龍","age":window.alert(123)},{"name":"吳京","age":33},"name":"甄子丹","age":44}';var jsonObj = eval('('+jsonData+')');//訪問(wèn)json對(duì)象數(shù)組的第一個(gè)對(duì)象的name屬性console.log(jsonObj.persons[0].name);

將age的值換成了Javascript代碼,依然可以解析,加入有人惡意修改這個(gè)代碼,那么就會(huì)造成嚴(yán)重后果。

但是JSON.parse不同

var jsonData = '{"persons":{"name":"成龍","age":window.alert(123)},{"name":"吳京","age":33},"name":"甄子丹","age":44}';var jsonObj = JSON.parse(jsonData);//訪問(wèn)json對(duì)象數(shù)組的第一個(gè)對(duì)象的name屬性console.log(jsonObj.persons[0].name);

瀏覽器會(huì)檢查出json中的不合理的代碼,并報(bào)告錯(cuò)誤

所以推薦使用JSON.parse

PS:下面在單獨(dú)介紹下eval()和JSON.parse()的區(qū)別

我們將一個(gè)字符串解析成json對(duì)象時(shí)可以使用兩種方法:

假設(shè)我們有一個(gè)json格式的字符串:

'{ "student" : [  {"name":"鳴人","age":17},   {"name":"小櫻","age":17},  {"name":"佐助","age":17} ]}'

然后我們需要把它解析成json對(duì)象

1、eval()代碼如下:

var data = '{"student" : [{"name":"鳴人","age":17}, {"name":"小櫻","age":17},{"name":"佐助","age":17}]}';eval('(' + data + ')');

2、JSON.parse()代碼如下:

var data = '{"student" : [{"name":"鳴人","age":17}, {"name":"小櫻","age":17},{"name":"佐助","age":17}]}';JSON.parse(data);

區(qū)別:eval方法不會(huì)去檢查給的字符串時(shí)候符合json的格式~同時(shí)如果給的字符串中存在js代碼eval也會(huì)一并執(zhí)行~比如如果上面的json格式的字符串改為:(注意紅色部分)

var data = '{"student" : [{"name":"鳴人","age":17}, {"name":"小櫻","age":alert("hehe")},{"name":"佐助","age":17}]}';

此時(shí)執(zhí)行eval方法后會(huì)先彈出一個(gè)提示框輸出hehe的字符串~

但是使用JSON.parse()就會(huì)報(bào)錯(cuò)~顯示錯(cuò)誤信息為當(dāng)前字符串不符合json格式~即JSON.parse()方法會(huì)檢查需要轉(zhuǎn)換的字符串是否符合json格式~

相比較而言eval方法是很危險(xiǎn)的~特別是當(dāng)涉及到第三方時(shí)我們需要確保傳給eval的參數(shù)是我們可以控制的~不然里面插入比如window.location~指向一個(gè)惡意的連接~那叫叫天啦

從這個(gè)層面講~還是推薦使用JSON.parse來(lái)實(shí)現(xiàn)json格式字符串的解析

考慮到我們?cè)谥圃靔son格式的字符串時(shí)極易出現(xiàn)錯(cuò)誤~這里推薦一個(gè)json格式字符串的在線校驗(yàn)工具:http://jsonlint.com/

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 精精国产xxxx视频在线播放7 | 韩国十九禁高潮床戏在线观看 | 久草免费新视频 | 免费在线成人网 | 成人宗合网 | 久久久久北条麻妃免费看 | 羞羞视频免费观看网站 | 天天操天天碰 | 一区二区三级视频 | 日韩欧美色综合 | 精品一区在线视频 | 国产69精品久久久久久 | 强伦女教师视频 | 精品国产一区二区三区四区在线 | 一区二区国产在线 | 黄色成人在线播放 | 午夜啪视频 | 欧美成人精品不卡视频在线观看 | 97黄色网 | 精品国产91久久久久 | 毛片在线看免费 | 久久99综合久久爱伊人 | 国产精品亚洲综合一区二区三区 | 国产精品刺激对白麻豆99 | 欧美精品18videos性欧美 | 国产精品区一区二区三区 | 国产亚洲欧美视频 | 欧美性猛交一区二区三区精品 | 久久精品免费国产 | 久草在线观看首页 | 日韩欧美电影一区二区三区 | 叶子楣成人爽a毛片免费啪啪 | 三级国产三级在线 | 婷婷亚洲一区二区三区 | a视频在线免费观看 | 国产精品久久久免费观看 | 国产一区毛片 | 成人午夜激情网 | 国产毛片在线高清视频 | 狠狠干b | 国产欧美亚洲精品 |