json.js下載地址:
我初學JSON,按照官方說明,在json2.js中有parse和stringify兩個方法,parse用於從一個字符串中解析出json對象。還是舉個例子說明:
1 var str = "{'name':'x', 'age':23}"; 2 JSON.parse(str.name);
原來認為這肯定能夠正確執行的,但是無論怎樣寫這個對象string,都拋出異常。后來發現原來是 " 和 ' 導致的錯誤。如果改為:
1 var str='{"name":"xskow", "age":23}'; 2 JSON.parse(str.name);
就OK了!
還有就是我們寫對象的時候一般可以{name:'xskow'},即屬性名可以不用雙引號括起來,但如果使用JSON.parse的話,每個屬性都必須用雙引號括起來,否則也會拋出異常。
復雜JSon數據的操作方法。
1 var str='{ "studies":[{ "UserName": "李彥宏", "Sex": "男", "Age":25, "XueHao":"00001", "BanJi":"一班" },{ "UserName": "馬雲", "Sex": "男", "Age":31, "XueHao":"00002", "BanJi":"二班" }]}' 2 JSON.parse(str.studies[0].userName);
服務端向客戶端返回了一串JSON格式的數據。在有些時候,因為某些特殊的原因我們不知道原始的key值,因此我們此時無法象正常一樣通過key值,來獲取value值。這時我們必須循環讀取JSON對象數據。廢話少說,來看例子。
服務端后台返回到客戶端的JSON格式字符串:var str = '[{"uname":"王強","day":"2010/06/17"},{"uname":"王海雲","day":"2010/06/11"}]';
我們把它轉換成JSON對象:var jsonList=eval("("+str+")");這時候如果以用斷點跟蹤查看這個jsonList對象,其實你會發現,他的長度為2,即jsonList.length=2。它的每一項都是一個單獨的JSON對象。請看下圖:
這時候假設我們不知道"uname"和"day"這兩個key值,我們開始對jsonList執行循環操作。
1 for(var i=0;i<jsonList.length;i++){ 2 3 for(var key in jsonList[i]){ 4 5 alert("key:"+key+",value:"+jsonList[i][key]); 6 7 } 8 9 }
這樣我們就可以輕松的獲取我所需要的key值和value值了