天天看點

AJAX——JSON資料格式

         JSON資料格式,前段時間一直聽他們合作的說,但是不知道是什麼,這次終于明白了,其實就是一種類似于XML的資料傳輸格式。下邊我從定義,文法,轉換為JavaScript對象以及與XML的比較四個方面介紹一下。

        一,先看一下定義吧,這是百度百科中的:

        JSON(JavaScriptObject Notation) 是一種輕量級的資料交換格式。它基于JavaScript的一個子集。JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl,Python等)。這些特性使JSON成為理想的資料交換語言。易于人閱讀和編寫,同時也易于機器解析和生成。

        二,看一下它的文法使用規則:

              首先我們來看一個例子吧,通過這個例子來學習它的各種文法規則吧:

<html>
<body>
<h2>通過 JSON 字元串來建立對象</h3>
<p>First Name: <span id="fname"></span></p> 
<p>First Name: <span id="fname2"></span></p> 

<script type="text/javascript">
//定義為employees為JSON資料格式的,裡邊包含了三個對象
var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];
employees[1].firstName="劉佳翰";
document.getElementById("fname").innerHTML=employees[0].firstName;
document.getElementById("fname2").innerHTML=employees[1].firstName;
</script>

</body>
</html>

           

           文法一:JSON 資料的書寫格式是:名稱/值對。

名稱/值對包括字段名稱(在雙引号中),後面寫一個冒号,然後是值;例如上邊的:"firstName":"Bill"

  文法二:JSON 值可以是:

數字(整數或浮點數)

字元串(在雙引号中)

邏輯值(true或 false)

數組(在方括号中)

對象(在花括号中)

null

           文法三:JSON對象:

JSON 對象在花括号中書寫;

對象可以包含多個名稱/值對;

  文法四:JSON數組:

JSON 數組在方括号中書寫;

數組可包含多個對象;

        三,如何将JSON資料格式轉換為JavaScript對象呢,我們可以利用内置函數eval().這點在例子中看:

<script type="text/javascript">
         //定義json資料格式json1和json2
    var json1 = "{'employees':[" +
    "{'firstName':'Bill','lastName':'Gates' }," +
    "{'firstName':'George','lastName':'Bush' }," +
    "{'firstName':'Thomas','lastName':'Carter' }]}";

    var json2 = "[1,2,{a:123,b:'String',c:[100,1001]}]";

    //這裡為什麼用("(" + json1 +")"),eval本身的問題。 由于json是以”{}”的方式來開始以及結束的,
    //在JS中,它會被當成一個語句塊來處理,是以必須強制性的将它轉換成一種表達式。

    var obj = eval("(" + json1 +")");
    var jsonArray = eval(json2);
    document.getElementById("fname").innerHTML = obj.employees[1].firstName
    document.getElementById("lname").innerHTML = obj.employees[1].lastName
    alert(jsonArray[1]);
</script>

           

         當然這是我們友善學習在前台寫的JSON資料格式,直接調用的,而在實際應用中,我們更多是将背景傳輸的格式寫成JSON的,然後傳到前台,再進行各種處理使用。

     四,JSON資料格式和XML的比較:

            先看一下兩個例子吧:

                  XML表示如下:

<?xml version="1.0" encoding="utf-8"?>
<country>
    <name>中國</name>
    <province>
        <name>黑龍江</name>
        <cities>
            <city>哈爾濱</city>
            <city>大慶</city>
        </cities>
    </province>
    <province>
        <name>廣東</name>
        <cities>
            <city>廣州</city>
            <city>深圳</city>
            <city>珠海</city>
        </cities>
    </province>
    <province>
        <name>台灣</name>
        <cities>
            <city>台北</city>
            <city>高雄</city>
        </cities>
    </province>
    <province>
        <name>新疆</name>
        <cities>
            <city>烏魯木齊</city>
        </cities>
    </province>
</country>

           

     JSON表示如下:

{
    "name":"中國",
    "province":[
    {
       "name":"黑龍江",
        "cities":{
            "city":["哈爾濱","大慶"]
        }
     },
     {
        "name":"廣東",
        "cities":{
            "city":["廣州","深圳","珠海"]
        }
    },
    {
        "name":"台灣",
        "cities":{
            "city":["台北","高雄"]
        }
    },
    {
        "name":"新疆",
        "cities":{
            "city":["烏魯木齊"]
        }
    }
]
}

           

      兩者相同之處:

  • 都是純文字
  • 都具有“自我描述性”(人類可讀)
  • 都具有層級結構(值中存在值)
  • 都可通過 JavaScript 進行解析
  • 都可使用 AJAX 進行傳輸

   兩者不同之處:

  • JSON沒有結束标簽
  • JSON更短
  • JSON讀寫的速度更快
  • JSON能夠使用内建的 JavaScript eval() 方法進行解析
  • JSON使用數組
  • JSON不使用保留字

      AJAX傳輸異步資料為什麼使用JSON呢?

對于 AJAX應用程式來說,JSON比 XML更快更易使用:

使用 XML

  • 讀取 XML文檔
  • 使用 XML DOM來循環周遊文檔
  • 讀取值并存儲在變量中

使用 JSON

  • 讀取 JSON字元串
  • 用 eval()處理 JSON字元串

 這樣就能看出我們利用JSON傳輸資料的快捷了。

         綜上為JSON的基礎學習,雖然知識點不大,但是還是非常重要的知識,學習好JSON,可以更友善更快捷的為我們的AJAX傳輸異步資料進行。AJAX的學習中……

繼續閱讀