Javascript中的Array(陣列) 、{}(對映) 與JSON解析
阿新 • • 發佈:2018-12-07
下面是總結:
1.將javascript中的Array和{}轉化為json字串可以使用json2.js,原始碼地址https://github.com/douglascrockford/JSON-js。
2.將json字串轉為javascript物件,可以使用javascript自帶的eval函式。
3.javascript中可以使用typeof檢視變數的型別。
4.要訪問json欄位,必須是對物件的訪問。
<script type="text/javascript"> $(function(){ var myArray=new Array(); ///陣列 myArray[0]="fgh"; myArray[1]="rt"; myArray[2]="xc"; var arrString=JSON.stringify(myArray); //將myArray物件轉化為字串 alert(arrString); //["fgh","rt","xc"] var obj1=eval("("+arrString+")"); ///eval將字串轉為json物件,注意在兩邊加上"("和")" alert("陣列第1個元素"+obj1[0]); var myMap = {}; //物件 myMap['name'] = "lxd"; myMap['age'] = 20; myMap['content'] = myArray; var mapString=JSON.stringify(myMap); ///將myMap物件轉化為字串 alert(mapString); ///{"name":"lxd","age":20,"content":["fgh","rt","xc"]} var obj2=eval("("+mapString+")"); alert("map中的name欄位:"+obj2.name); }); </script>
為什麼eval("("+mapString+")")
eval本身的問題。 由於json可能是以”{}”的方式來開始以及結束的,在JS中,它會被當成一個語句塊來處理,所以必須強制性的將它轉換成一種表示式。
加上圓括號的目的是迫使eval函式在處理JavaScript程式碼的時候強制將括號內的表示式(expression)轉化為物件,而不是作為語句(statement)來執行。