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

首頁 > 編程 > JavaScript > 正文

JS操作JSON詳細總結

2019-11-20 21:01:52
字體:
來源:轉載
供稿:網友

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

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

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

在數據傳輸流程中,json是以文本,即字符串的形式傳遞的,而JS操作的是JSON對象,所以,JSON對象和JSON字符串之間的相互轉換是關鍵。例如:

JSON字符串:
var str1 = '{ "name": "cxh", "sex": "man" }';

JSON對象:
var str2 = { "name": "cxh", "sex": "man" };

第一種解決方法:
var dataObj=eval_r("("+data+")");//轉換為json對象
為什么要 eval這里要添加 “("("+data+")");//”呢?

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

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

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

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

var str1 = '{ "name": "cxh", "sex": "man" }';
var data=eval_r("("+str1+")");//轉換為json對象//data =(new
alert (data.name);//會顯示出cxh

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

第二種解決方法:
第二種解析方式就是使用Function對象來完成,它的典型應用就是在JQUERY中的AJAX方法下的success等對于返回數據data的解析
var str1 = '{ "name": "cxh", "sex": "man" }';
var data = (Function("","return "+str1))();
alert (data.name);//會顯示出cxh

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久看免费视频 | 国产精品国产成人国产三级 | 欧美中文字幕一区二区三区亚洲 | 国产一区免费视频 | www.91pron| 国产91一区| 色妞欧美| 国产正在播放 | 久久色伦理资源站 | 人人看人人舔 | 久久久久亚洲a | 激情久久婷婷 | 未成年人在线观看 | 国产黄色一区二区 | 在线观看国产一区二区三区 | 黄色特级一级片 | 4p嗯啊巨肉寝室调教男男视频 | 在线观看一二区 | 毛片福利 | 亚洲第一色片 | 美国av免费看 | 高潮激情aaaaa免费看 | 久久精品二区 | 国产自91精品一区二区 | 成人小视频在线播放 | 黄色网址免费在线播放 | 日本xxxx色视频在线观看免费, | 久久精品中文字幕一区二区三区 | 免费观看黄色片视频 | 色诱亚洲精品久久久久久 | 久久精品79国产精品 | 国产亚洲精品美女久久久 | 国产精品性夜天天视频 | 毛片免费视频网站 | 午夜视频亚洲 | 成人午夜精品久久久久久久蜜臀 | 久草视频在线资源 | 97超碰资源站 | 成人激情久久 | 黄片毛片一级 | 免费观看一级黄色片 |