2012-04-12 74 views
0

目前我們有一個AJAX驅動的站點,它返回以下格式的JSON響應:[{"n":"bob"}, {"n":"jim"}, ..., {"n":"alex"}]。基本上是一個json對象的數組。

但是我們正在考慮如此構建它:[["bob"], ["jim"], ..., ["alex"]]。基本上是一組數組。

明顯的區別在於,我們不是通過它的屬性訪問數據,而是通過假定的索引位置(即array [0] == name)來訪問它,但除此之外,我很好奇什麼是優點/缺點是每個。有趣的因素:客戶端的性能(包括構建數據結構和檢索其值),帶寬(顯然是在較大的數據集上或者對於較慢的互聯網連接,比如移動設備),設計模式/最佳實踐,其他人如何設計響應, etc ...json數組v對象 - 優缺點

+2

這個問題不夠精確,答案有「明顯」的味道。 – Vincent 2012-04-12 05:08:33

+2

只是'''bob','jim','alex']'? – neoascetic 2012-04-12 05:08:36

+0

*「假設指數頭寸」* - 您已回答了您自己的問題,爲什麼這通常是一個壞主意。 – deceze 2012-04-12 05:16:31

回答

1
  • 當使用對象在陣列格式,可以每個項目加載更多的數據,而不是僅僅n

    [{ 
         'name' : 'John', 
         //more data about john 
    },{ 
         'name' : 'Joe', 
         //more data about joe 
    }] 
    //myArray[0].name = John 
    
  • 當使用該數組時,數據返回被假定爲同一種類。

    ['John','Joe'...] //all names 
    //myArray[0] = John 
    

,但是這一切都歸結到你如何分析數據。


這樣的結構化數據:

[["bob"], ["jim"], ..., ["alex"]] 

是完全錯誤的。爲什麼把名字放在一個數組中,放在一個名稱數組中?第二個級別是什麼?

+0

對不起,我試圖給一個簡單的例子,以避免混淆。如果您更喜歡更復雜的示例,請說明列表中的每個項目不僅包含姓名,也可能包含個人的全部個人資料數據。 – 2012-04-12 05:29:51

+0

@paulsmith然後數組中的對象(我的答案中的第一個樣本)將是一個更安全的解決方案。 – Joseph 2012-04-12 05:33:00

0

該數組方法將阻止您使用有意義的索引名稱,所以我會使用JSON對象。你還會發現大多數編程語言都有很好的庫來創建JSON輸出。

除非您正在處理非常大的數據集,否則我認爲陣列方法不會提供任何明顯的性能優勢。

+0

從可讀性的角度來看,JSON對象方法更好。但是你是否說數組實際上比對象更快?如果是這樣,在什麼方面?訪問?解析?記憶? – 2012-04-12 05:31:35

+0

http://stackoverflow.com/questions/8423493/what-is-the-performance-of-objects-arrays-in-javascript-specifically-for-googl – 2012-04-12 06:29:15