From Gossip@caterpillar

Ajax Gossip: JSON

JavaScript物件標記法,英文名稱JavaScript Object Notation,簡稱JSON,是一種文字格式標記法,為 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的子集合,想要了解JSON,可以先了解JavaScript中陣列的運作方式。

如果您要一個具索引的陣列,可以使用Array initializer的方式,例如:
myLibrary.books=
   [predefinedBook1,predefinedBook2,predefinedBook3];

在JavaScvript中,您可以使用Object initializer的方式來建立物件並指定其屬性,例如:
myLibrary.books={
    bestSeller : predefinedBook1,
    cookbook : predefinedBook2,
    spaceFiller : predefinedBook3
};

如果屬性名稱中間有空白,則可以用引號括住,例如:
myLibrary.books={
    "best Seller" : predefinedBook1,
    cookbook : predefinedBook2,
    spaceFiller : predefinedBook3
};

由於陣列是物件,而陣列之中可以置放物件,而物件可以使用Object initializer的方式來建立,因而您可以更複雜的方式來建立物件,物件中包括陣列屬性,陣列中包括物件:
var some = { // 這邊是Object initializer
    prop1 : "value1",
    prop2 : ["v1", "v2", "v3"],  // 這邊是Array initializer
    prop3 : [  // 這邊是Array initializer
        {  // 這邊是Object initializer
            key1 : "o1",
            key2 : [ // 這邊是Array initializer
                        {loc: "Kaohsiung", number : 1503},  // 這邊是Object initializer
                        {loc: "Taipei", number : 2}
                   ]
             key3 : new Date(2007, 2, 1)
        }
    ]
};

JSON在指定值時可以使用任何JavaScript程式碼,甚至是自己定義的函式 :
function currentDate(){
    return new Date(2007, 2, 1);
}
var volNum=2;
var turnipVol2={
    title : "Ajax in action" +volNum,
    authors : [
        { name: "Justin", age: 32 }
    ],
    publicationDate : currentDate()  // 設定為currentDate()的傳回值
};

也可以使用JSON建立物件並建立成員函式:
var turnipVol2={
    …
    summarize:function(len){
        ....
    }
};

還可以如下混用建立物件與其屬性:
var numbers={ one:1, two:2, three:3 };
numbers.five=5;
numbers.someone = {
    name : "Justin",
    age : 32,
    birthday : new Date(1975, 5, 26)
};

有了以上Object initializer的基礎,可以進一步看看 JSON  的介紹,了解 JSON 的文字格式結構。