轉自:http://blog.csdn.net/itlwc/article/details/9842583
JSON簡介
- JSON指的是JavaScript對象表示法(JavaScript Object Notation)
- JSON用來存儲和交換文本信息
- JSON是純文本的
- JSON具有自我描述性
- JSON具有層級結構
- JSON可通過JavaScript進行解析
- JSON數據可以使用AJAX進行傳輸
- JSON語法是JavaScript語法的子集
- JSON數據的書寫格式是:名稱/值對
- JSON值
- 數字(整數或浮點數)
- 字符串(在雙引號中)
- 邏輯值(true 或 false)
- 數組(在方括號中)
- 對象(在花括號中)
- null
- 數據由逗號分隔
- var txt = '{"student":[{"name":"lwc","age":26},{"name":"nxj","age":24}]}';
- 創建一個單獨成員student對象,此成員包含兩個對象name,age的數組
- <script>
- var JSONObject= [
- {
- "name":"lwc",
- "age":26
- },{
- "name":"nxj",
- "age":24
- }
- ]
- for(var j in JSONObject){
- alert(JSONObject[j].name)
- }
- for(var i=0;i<JSONObject.length;i++){
- alert(JSONObject[i].name)
- }
- </script>
- <script>
- var txt = '{"student":[{"name":"lwc","age":26},{"name":"nxj","age":24}]}';
- var obj = eval('('+txt+')');
- var arry = obj.student;
- for(var i=0;i<arry.length;i++){
- alert(arry[i].name)
- }
- </script>
- JSON文件的文件類型是 .json
- JSON文本的MIME類型是 application/json
- name: <span id="name"></span><br />
- age: <span id="age"></span><br />
- 使用JavaScript函數eval()可用於將JSON文本轉換爲JavaScript對象
- <script>
- var txt = '{"student":[{"name":"lwc","age":26}]}';
- var obj = eval('('+txt+')');
- var arry = obj.student;
- document.getElementById("name").innerHTML=arry[0].name;
- document.getElementById("age").innerHTML=arry[0].age;
- </script>
- 使用JSON解析器將JSON字符串轉換爲對象(IE8以下版本不支持JSON對象)
- <script>
- var txt = '{"student":[{"name":"lwc","age":26}]}';
- var obj = JSON.parse(txt);
- var arry = obj.student;
- document.getElementById("name").innerHTML=arry[0].name;
- document.getElementById("age").innerHTML=arry[0].age;
- </script>
- 方法一:
- <script>
- var txt = '{"student":[{"name":"lwc","age":26}]}';
- var obj;
- if (typeof(JSON) == 'undefined'){
- obj = eval("("+txt+")");
- }else{
- obj = JSON.parse(txt);
- }
- </script>
- 方法二:調用json2.js(推薦)
- <script type="text/javascript" src="js/json2.js"></script>
- <script>
- var txt = '{"student":[{"name":"lwc","age":26}]}';
- var obj = JSON.parse(txt);
- var arry = obj.student;
- document.getElementById("name").innerHTML=arry[0].name;
- document.getElementById("age").innerHTML=arry[0].age;
- </script>
- json2.js下載地址 http://download.csdn.net/detail/itlwc/5893971
- eval()
- 使用eval()講JSON文本轉換爲對象,eval()是調用JavaScript編譯器
- 由於JSON是JavaScript的子集,因此編譯器正確的解析文本產生對象
- eval()非常快速,他可以編譯執行任何JavaScript,因此產生了安全性問題
- 當使用可信任,完善的JavaScript程序時纔可以使用eval()
- 使用XMLHttpRequest的web應用,頁面之間通訊是同源的,因此是可信任的,但不完善
- 如果服務器沒有嚴謹的JSON編碼,或者沒有嚴格的輸入驗證,那麼可能傳送包括危險腳本的無效JSON文本
- eval()將執行惡意的腳本
- JSON.parse()
- JSON.parse()解析器只能辨識JSON文本,拒絕所有腳本
- 提供了本地JSON支持的瀏覽器的JSON解析器將遠快於eval函數
- 預計未來的ECMAScript標準將支持本地JSON
- JSON.stringify()
- JSON.stringify()進行反向操作,可以將JavaScript轉換爲JSON文本
- JSON不支持循環數據,因此不要爲JSON.stringify()提供循環數據
- 案例
- <script>
- var txt = {"name":"lwc","age":26};
- var str = JSON.stringify(txt);
- alert(str);
- </script>