做網頁總會使用javascript,使用javascript總會使用JSON。最近用到一下,就寫寫。
下面是總結:
1.將javascript中的Array和{}轉化為json字符串可以使用json2.js,源碼地址https://github.com/douglascrockford/JSON-js。
2.將json字符串轉為javascript對象,可以使用javascript自帶的eval函數。
3.javascript中可以使用typeof查看變量的類型。
4.要訪問json字段,必須是對對象的訪問。
jquery實例代碼:
1 <script type="text/javascript"> 2 $(function(){ 3 var myArray=new Array(); ///數組 4 myArray[0]="fgh"; 5 myArray[1]="rt"; 6 myArray[2]="xc"; 7 var arrString=JSON.stringify(myArray); //將myArray對象轉化為字符串 8 alert(arrString); //["fgh","rt","xc"] 9 var obj1=eval("("+arrString+")"); ///eval將字符串轉為json對象,注意在兩邊加上"("和")" 10 alert("數組第1個元素"+obj1[0]); 11 12 var myMap = {}; //對象 13 myMap['name'] = "lxd"; 14 myMap['age'] = 20; 15 myMap['content'] = myArray; 16 var mapString=JSON.stringify(myMap); ///將myMap對象轉化為字符串 17 alert(mapString); ///{"name":"lxd","age":20,"content":["fgh","rt","xc"]} 18 var obj2=eval("("+mapString+")"); 19 alert("map中的name字段:"+obj2.name); 20 }); 21 </script>
為什么eval("("+mapString+")")
eval本身的問題。 由於json可能是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表達式。
加上圓括號的目的是迫使eval函數在處理JavaScript代碼的時候強制將括號內的表達式(expression)轉化為對象,而不是作為語句(statement)來執行。
參考:
http://www.cnblogs.com/myjavawork/archive/2011/03/10/1979279.html
http://www.cnblogs.com/lidabo/archive/2011/12/29/2305770.html