2013-01-17 73 views
2

我正在使用一個連接到PHP/MySQL服務器的應用程序,所有服務器都以JSON格式返回。例如,用戶列表作爲JSONArrayJSONObject返回。每個對象都包含個人用戶的信息(姓名,地點,電話號碼等)。使用JSONArray或正常數組來存儲/讀取數據更高效嗎?

在處理這種格式的信息時,將所有格式保留爲JSON格式的效率更高,並且只根據需要從數組/對象中提取項目?或者從JSONArray中提取所有內容幷包含對象以便首先構建常規的ArrayArrayList更好?

+0

我真的很喜歡JSONArray和其他JSON類,並推薦他們易於使用,但我不知道性能或效率。我會好奇地看到答案 - 很好的問題。 –

+0

你能清楚嗎?最好有一個JSON數組的JSONArray,讓每個json對象包含像key/value格式的用戶信息,比如name/Rarw – Kanth

+0

我可以試試(我以爲我認爲這個問題很清楚)。我試圖找出哪一種更高效(1)以JSON格式保留數據並根據需要提取數據,或者(2)從JSON對象中提取內容並將常規字符串放入數組或其他收集器中。我想它歸結爲知道在解析JSON與常規數組或列表中是否存在更多或更少的開銷。 – Rarw

回答

3

JSONArray內部使用ArrayList。這只是包裝ArrayList。所以我會說沒有區別。 JSONObject使用HashMap所以再次沒有真正的缺點。

+0

如果它只是一個包裝不會變慢?我假設有一段時間來解析JSON和普通字符串。因此,然後解析包裝ArrayList的JSONArray,效率會比從ArrayList獲取entires效率低。 – Rarw

+0

@rarw解析將無論如何都將完成,無論您是使用list還是jsonarray。包裝引入了一些延遲,但它們非常小 - 在java中非常快速的方法調用。 –

+0

好的 - 那麼真正的答案是JSON的效率會比使用regualr字符串值稍微低一點。但是,至少在大多數情況下,這種差異是可以忽略的(除非你使用了大量的數據,在這種情況下,包裝過程必須消耗更多的時間/內存)。 – Rarw

0

總之,JSON(可以認爲是JavaScript的一個子集)比XML更精簡。這有幾個積極的副作用

  • JSON比相應的XML
  • JSON更快,即簡單的語法->更容易解析(更快的解析)

JSON是JavaScript的,我認爲小它是一個近親。但是JSON是獨立的東西,並且JSON.org在描述JSON方面做得很好。它還爲JavaScript提供了一個兼容性庫,當瀏覽器不支持時,它將增加對JSON.parseJSON.stringify的支持。

雖然當時(2009年中)的eval用於評估JavaScript,但它也可以評估JSON,即解析JSON,但它被認爲是不安全的,因爲它確實允許執行任意JavaScript代碼。

由於JSON與JavaScript的密切關係,JSON恰好適合瀏覽器和自然的平臺發展方式。

儘管由於可以鍵入它,所以XML可能會被認爲具有更好的嚴謹性,但這也是使它慢很多的原因(我認爲它也有點冗長)。但如果這是你真正想要的,你應該使用它,XML同樣無處不在。

我不會進入關於動態或靜態類型的爭論,但我會這樣說。在無模式數據之上添加東西非常簡單,並且有許多方法可以進行驗證,無論是架構還是沒有架構。

+0

很好的答案,但錯誤的問題。這個問題沒有提出有關XML的任何問題。 :) –

相關問題