2012年8月9日 星期四

一秒看破 JSON

有首歌這麼唱:JSON JSON 滿天下 越傳它越強大~

就程式設計的角度來看其實XML比較好,可以直接使用洞操作(DOM)

但是要比速度就弱了,誰叫JSON是 輕量級的資料交換語言

雖然WIKI這麼叫他其實他骨子裡就只是個字串,讓後放些 { [ : , 隔開而已

JSON怎麼寫?我們來看看官方的說法

http://www.json.org/

很好資質駑鈍的我完全不知道他媽的在說什麼

直接看範例對照立馬就懂

還是不懂的話,就去立馬廄吧-.-

{[值],[值],[值]} 或 {"索引":[值],"索引":[值],"索引":[值]}

這是一個物件裡面很多陣列,偵錯起來看起來像這樣

[{"名稱":"值"},{"名稱":"值"},{"名稱":"值"}]

這是一個陣列裡面很多物件,偵錯起來看起來像這樣

{}包起來的是物件,[]包起來的是陣列

{}裡面必須要有 名稱:值

[]裡面只能有 值

可以為值的項目有字串、數字、物件、陣列、布林、NULL

雖然規則不嚴格,但是如果沒遵守$.parseJSON()就會報錯

容易出錯的地方:

物件裡面只有值 ex: [{"イヴ"},{"ギャリー"},{"メアリー"}]

不能給物件索引值/名稱 ex: ["Ib":{"イヴ"},"Garry":{"ギャリー"},"Mary":{"メアリー"}]

索引裡面寫成名稱:值 ex: {["Ib":"イヴ"],["Garry":"ギャリー"],["Mary":"メアリー"]}

JSON 骨子裡就是 Javascript 裡面的 陣列 跟 物件 這兩種東東改成字串的寫法

陣列只有數字索引值

personObjArray_JsonObj[0].enus == Ib

所以要由某個值取得項目必須要走訪全部的項目

除非有辦法事先得知索引數

物件的則是屬性,屬性可以命名

personObj.Ib.enus == Ib

personObj["Garry"] == Ib

※我用"項目"這個名詞來表示一組有獨立意義的數值組合,因為陣列跟物件都能達成,JSON的核心價值在於把每個項目分隔開來,以便走訪取值

兩派用法都能達成目的,因為Javascript的陣列跟物件都可以被for走訪,但是他們有著微妙的區別

但是個人偏好使用物件

因為我只需要知道名稱,我可以直接從Json 物件裡面 取得底下值

而不必用each走訪整個Json再取出值

沒有留言:

張貼留言