亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

JS使用eval解析JSON的注意事項分析

2024-05-06 16:25:07
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了JS使用eval解析JSON的注意事項,結合實例形式具體分析了JS解析JSON的技巧與使用evel時的注意事項,具有一定參考借鑒價值,需要的朋友可以參考下

本文較為詳細的分析了JS使用eval解析JSON的注意事項。分享給大家供大家參考,具體如下:

在JS中將JSON的字符串解析成JSON數據格式,一般有兩種方式:

1.一種為使用eval()函數。

2. 使用Function對象來進行返回解析。

使用eval函數來解析,并且使用jquery的each方法來遍歷

用jquery解析JSON數據的方法,作為jquery異步請求的傳輸對象,jquery請求后返回的結果是json對象,這里考慮的都是服務器 返回JSON形式的字符串的形式,對于利用JSONObject等插件封裝的JSON對象,與此亦是大同小異,這里不再做說明。

這里首先給出JSON字符串集,字符串集如下:

代碼如下:

 

 
  1. var data=" 
  2. root: 
  3. {name:'1',value:'0'}, 
  4. {name:'6101',value:'北京市'}, 
  5. {name:'6102',value:'天津市'}, 
  6. {name:'6103',value:'上海市'}, 
  7. {name:'6104',value:'重慶市'}, 
  8. {name:'6105',value:'渭南市'}, 
  9. {name:'6106',value:'延安市'}, 
  10. {name:'6107',value:'漢中市'}, 
  11. {name:'6108',value:'榆林市'}, 
  12. {name:'6109',value:'安康市'}, 
  13. {name:'6110',value:'商洛市'
  14. }"; 

這里以jquery異步獲取的數據類型——json對象和字符串為依據,分別介紹兩種方式獲取到的結果處理方式。

1.對于服務器返回的JSON字符串,如果jquery異步請求沒做類型說明,或者以字符串方式接受,那么需要做一次對象化處理,方式不是太麻煩,就是將該字符串放于eval()中執行一次。這種方式也適合以普通javascipt方式獲取json對象,以下舉例說明:

 

 
  1. var dataObj=eval("("+data+")");//轉換為json對象 
  2. Red rose為什么要 eval這里要添加 “("("+data+")");//”呢? 

原因在于:eval本身的問題。 由于json是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表達式。

加上圓括號的目的是迫使eval函數在處理JavaScript代碼的時候強制將括號內的表達式(expression)轉化為對象,而不是作為語 句(statement)來執行。舉一個例子,例如對象字面量{},如若不加外層的括號,那么eval會將大括號識別為JavaScript代碼塊的開始 和結束標記,那么{}將會被認為是執行了一句空語句。所以下面兩個執行結果是不同的:

 

 
  1. alert(eval("{}"); // return undefined 
  2. alert(eval("({})");// return object[Object] 

對于這種寫法,在JS中,可以到處看到。

如: (function()) {}(); 做閉包操作時等。

 

 
  1. alert(dataObj.root.length);//輸出root的子對象數量  
  2. $.each(dataObj.root,fucntion(idx,item){  
  3. if(idx==0){  
  4. return true;  
  5. }  
  6. //輸出每個root子對象的名稱和值  
  7. alert("name:"+item.name+",value:"+item.value);  
  8. }) 

注:對于一般的js生成json對象,只需要將$.each()方法替換為for語句即可,其他不變。

2.對于服務器返回的JSON字符串,如果jquery異步請求將type(一般為這個配置屬性)設為“json”,或者利 用$.getJSON()方法獲得服務器返回,那么就不需要eval()方法了,因為這時候得到的結果已經是json對象了,只需直接調用該對象即可,這 里以$.getJSON方法為例說明數據處理方法:

 

  1. $.getJSON("http://www.49028c.com/",{param:"gaoyusi"},function(data){  
  2. //此處返回的data已經是json對象  
  3. //以下其他操作同第一種情況  
  4. $.each(data.root,function(idx,item){  
  5. if(idx==0){  
  6. return true;//同countinue,返回false同break  
  7. }  
  8. alert("name:"+item.name+",value:"+item.value);  
  9. });  
  10. }); 

這里特別需要注意的是方式1中的eval()方法是動態執行其中字符串(可能是js腳本)的,這樣很容易會造成系統的安全問題。所以可以采用一些規避了eval()的第三方客戶端腳本庫,比如JSON in JavaScript就提供了一個不超過3k的腳本庫。

第二種解析方式就是使用Function對象來完成,它的典型應用就是在JQUERY中的AJAX方法下的success等對于返回數據data的解析

 

 
  1. var json='{"name":"CJ","age":18}'
  2. data =(new Function("","return "+json))(); 

此時的data就是一個會解析成一個 json對象了.

希望本文所述對大家JavaScript程序設計有所幫助。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩成人高清在线| 热99精品只有里视频精品| 欧美亚洲在线观看| 日韩在线播放视频| 久久久久久噜噜噜久久久精品| 97精品国产97久久久久久春色| 久久久久国产精品免费| 精品久久久久久中文字幕一区奶水| 精品国产欧美一区二区五十路| 国产精品成人播放| 都市激情亚洲色图| 精品性高朝久久久久久久| 欧美日韩ab片| 国产精品va在线播放| 亚洲美女av黄| 亚洲老头同性xxxxx| 亚洲色图av在线| 最近免费中文字幕视频2019| 国产精品日日摸夜夜添夜夜av| 国产精品美女久久久久av超清| 成人久久一区二区| 色yeye香蕉凹凸一区二区av| 日韩少妇与小伙激情| 成人黄色av免费在线观看| 国产91九色视频| 久久久久久高潮国产精品视| 亚洲精品videossex少妇| 国产精品私拍pans大尺度在线| 亚洲综合大片69999| 亚洲欧美日韩综合| 亚洲国产精品va在线观看黑人| 不卡av在线播放| 久久免费视频网站| 国产性色av一区二区| 国产精品美女主播在线观看纯欲| 4p变态网欧美系列| 中文字幕亚洲二区| 国产综合色香蕉精品| 97久久精品人搡人人玩| 午夜精品福利在线观看| 91精品久久久久久久久久久久久久| 色妞一区二区三区| 国产91九色视频| 77777少妇光屁股久久一区| 91久久国产婷婷一区二区| 最好看的2019年中文视频| 国产精品丝袜久久久久久不卡| 色在人av网站天堂精品| 中文字幕在线看视频国产欧美在线看完整| 日韩在线激情视频| 日韩av免费在线播放| 亚洲天堂第二页| 亚洲最新av网址| 成人亚洲综合色就1024| 欧美一级淫片videoshd| 精品国偷自产在线| 亚洲综合在线中文字幕| 国产精品私拍pans大尺度在线| 亚洲精品欧美日韩| 亚洲精品一区二区久| 亚洲国产精品福利| 欧美日韩一区二区三区在线免费观看| 欧美激情日韩图片| 欧美午夜视频一区二区| 日韩精品一区二区三区第95| 日韩中文字幕免费视频| 一级做a爰片久久毛片美女图片| 91精品视频免费观看| 国产欧美精品xxxx另类| 91精品视频在线| 91色视频在线导航| 国产日韩在线观看av| 久久久伊人欧美| 91香蕉嫩草影院入口| 国产精品久久久久久久久久久新郎| 欧美亚洲在线播放| 欧美日韩电影在线观看| 97视频在线观看免费| 亚洲aⅴ日韩av电影在线观看| 日韩成人在线免费观看| 2018中文字幕一区二区三区| 久久久精品一区二区三区| 亚洲国产日韩欧美在线99| 中文字幕在线观看亚洲| 日韩av在线导航| 一本色道久久88综合亚洲精品ⅰ| 精品国产91乱高清在线观看| 国产成人亚洲综合91| 亚洲wwwav| 国产精品久久一区| 国产精品免费一区豆花| 91精品国产高清自在线| 久99九色视频在线观看| 国产精品免费电影| 亚洲欧洲美洲在线综合| 欧美多人爱爱视频网站| 日韩欧美国产黄色| 亚洲区免费影片| 成人综合网网址| 国产一区二区三区在线| 国产亚洲精品va在线观看| 正在播放国产一区| 亚洲www永久成人夜色| 亚洲男人天堂古典| 亚洲一区二区精品| 国产精品ⅴa在线观看h| 亚洲日韩欧美视频| 欧美性精品220| 亚洲第一在线视频| 91国产高清在线| 在线观看日韩视频| 欧美电影免费观看高清| 欧美人与性动交| 久久露脸国产精品| 国产日韩欧美黄色| 欧美在线视频a| 亚洲系列中文字幕| 日韩在线免费观看视频| 久久人人爽人人爽人人片av高清| 最近日韩中文字幕中文| 亚洲成人性视频| 欧美另类69精品久久久久9999| 在线日韩中文字幕| 国产亚洲激情视频在线| 亚洲国产精品人久久电影| 亚洲欧美资源在线| 欧美电影免费在线观看| 欧美中文字幕在线观看| 91中文精品字幕在线视频| 国产精品麻豆va在线播放| 欧美日韩国产综合新一区| 亚洲成人网在线观看| 欧美黑人狂野猛交老妇| 亚洲女性裸体视频| 亚洲国产精品va在看黑人| 韩国国内大量揄拍精品视频| 久久精品人人爽| 亚洲国产天堂网精品网站| 久久夜色精品亚洲噜噜国产mv| 亚洲国产精品久久91精品| 亚洲最大福利视频网| 欧美精品18videos性欧| 日本不卡免费高清视频| 91久久国产精品| 91精品在线一区| 91tv亚洲精品香蕉国产一区7ujn| 国产日本欧美在线观看| 亚洲精品国产综合区久久久久久久| 中文字幕国内精品| 国产成人亚洲综合| 国产精品久久久久77777| 4k岛国日韩精品**专区| 国产精品海角社区在线观看| 91国自产精品中文字幕亚洲| 亚洲成人av中文字幕| 成人激情av在线| 亚洲图中文字幕| 国产97色在线| 欧美性猛交xxxx乱大交极品| 国产成人jvid在线播放| 2019精品视频| 日韩中文视频免费在线观看| 青青草国产精品一区二区| 高清日韩电视剧大全免费播放在线观看|