2012-10-30

[Javascript]Javascript物件表示法 - JSON

JSON (Javascript Object Notation)是Javascript 下的一種物件描述方法。(如果你對單純用Javascript來寫物件有興趣的話,可以參考這篇。)

利用成對的 { } 來包住各物件(object),用成對的 [ ] 來包住陣列(array),用成對的 " " 來包住各字串,用逗號來區隔各物件中的變數或物件。

資料型態有 string、number、array、object,另外有三個常數true、false、null。

下面範例是兩個 JSON物件:
第一個其中又包含了obj1物件(擁有兩個變數child1和child2,各自的值是value1和value2),以及一個陣列 array1。
第二個是一個陣列裡放了三個JSON物件。
//單一個JSON
var objJSON = {"obj1": {"child1":"value1","child2":"value2"},"array1": [1, 2, 3, 4, 5]};

//多個JSON於陣列
aryJSON = [{ name: "Lin", age: "20", height: "182" },
           { name: "Wen", age: "18", height: "165" },
           { name: "Pin", age: "25", height: "171" }];

P.S 1:可以透過 JSON Editor Online,方便看出較複雜的JSON階層關係,反之,也能用它來產生JSON格式:

P.S 2:另外,也能透過 JSON2CSharp 來將JSON轉換成C#的物件格式,以P.S 1的JSON為例,產生出來的C#物件格式如下:

P.S 3:另有介紹ASP.NET如何Parse JSON的文章。

一些操作JSON的範例如下:
直接取值
alert(objJSON.obj1.child2);  //alert value2
alert(objJSON.array1[1]);    //alert 2
alert(aryJSON[0]["name"]);   //alert Lin
alert(aryJSON[1]["height"]); //alert 165
透過.length得知其中的物件數
var jsonNum = aryJSON.length; //jsonNum=3
用迴圈來取出陣列裡JSON的值
for (var i = 0; i < jsonNum; i++) {
  alert(aryJSON[i]["name"]);   //i=0=>Lin; i=1=>Wen; i=2=>Pin
  alert(aryJSON[i]["age"]);    //i=0=>20;  i=1=>18;  i=2=>25
  alert(aryJSON[i]["height"]); //i=0=>182; i=1=>165; i=2=>171
}
在不知變數名稱的前提下透過迴圈取出變陣列裡JSON的值
for (var i = 0; i < jsonNum; i++) {
  for (var name in aryJSON[i]) {
    alert(aryJSON[i][name]);  //分別alert各欄位的值
  }
}
產生table
//先建立一個html table 
var i = 0; //用.each函式來取出aryJSON裡的物件 $.each(aryJSON, function() { $("#tblJSON").append("<tr>" + "<td>" + aryJSON[i].name + "</td>" + "<td>" + aryJSON[i].age + "</td>" + "<td>" + aryJSON[i].height + "</td>" + "</tr>"); i++; });


參考來源:My Program阿達隨筆

沒有留言:

張貼留言