1. 程式人生 > >Javascript中的Array(陣列) 、{}(對映) 與JSON解析

Javascript中的Array(陣列) 、{}(對映) 與JSON解析

下面是總結:

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)來執行。