什麼是 JSON
JSON概念很簡單,JSON 是一種輕量級的資料格式,他基於 javascript 文法的子集,即數組和對象表示。由於使用的是 javascript 文法,因此JSON 定義可以包含在javascript 檔案中,對其的訪問無需通過基於 XML 的語言來額外解析。不過在使用 JSON 之前,很重要的一點是理解 javascript 中數組及對象字面量的特殊文法。
1.1 數組字面量
數組字面量,是用一對方括弧括起一組用逗號隔開的 javascript 值,例如:
var as=["hi", 10, true , null];
1.2 對象字面量
對象字面量,是通過兩個花括弧來定義的。在花括弧內可以放置任意數量的“名稱-值”對,定義格 式字串值”。除了最後一行外,每個“名稱-值”對後必須有一個逗號(這與Perl 中的聯合數組的定義有些類似)。例如:
var oCar = {
"color": "green",
"doors" : 3,
"paidFor" : false
};
1.3 混合字面量
我們可以混用對象和數組字面量,來建立一個對象數組,或一個包含數組的對象。(具體的我也不太清楚)
可能有人對json格式的文本不熟悉,我下面給大家寫段json資料:
{
"planet":
{
"name":"earth",
"type":"small",
"info":["Earth is a small planet,third from the sun","two-thirds","climated and landcapes"]
}
}
下面是一個簡單的例子:
function showInfo(event)
{
var planet=this.id;
var scriptUrl=planet+".json";
new net.ContentLoader(scriptUrl,parseJSON);
}
function parseJSON()
{
var name="";
var descrip="";
var jsonTxt=net.req.responseText;
var jsonObj=eval("("+jsonTxt+")");
name=jsonObj.planet.name
var ptype=jsonObj.planet.type;
if(ptype)
{
descrip+="<h2>'+ptype+"</h2>";
}
var infos=jsonObj.planet.info;
descrip+="<ul>";
for(var i in infos)
{
descrip+="<li>"+infos[i]+"</li>\n";
}
descrip+="</ul>";
top.showPopup(name,descrip);
}
我們再一次使用ContentLoader來擷取資料,並且分配一個回呼函數parseJSON()。整個的響應文本是一條合法的JavaScript語句,因此我們可以用過簡單的調用eval()函數來建立一個對象圖:
var jsonObj=eval("("+jsonTxt+")");