2012-09-05 67 views

回答

147

當您在Android中使用JSON數據時,您將使用JSONArray來解析以數組括號開頭的JSON。 JSON中的數組用於組織相關項目的集合(可能是JSON對象)。
例如:[{"name":"item 1"},{"name": "item2} ]

另一方面,在處理以花括號開頭的JSON時,您將使用JSONObject。 JSON對象通常用於包含與一個項目相關的鍵/值對。 例如:{"name": "item1", "description":"a JSON object"}

當然,JSON數組和對象可以嵌套在一起。這方面的一個常見的例子是返回包含一些元數據一起符合您查詢的項目的數組JSON對象的API:

{"startIndex": 0, "data": [{"name":"item 1"},{"name": "item2"} ]} 
+2

{ 「的startIndex」:0,[{ 「名稱」: 「項目1」},{ 「名稱」: 「ITEM2」}]}既不是jsonbject也不是jsonArray我已編輯它 –

4

我一直使用的對象,更易於擴展,JSON數組不是。例如,你最初有一些數據作爲json數組,那麼你需要在它上面添加一個狀態頭,否則你會被卡住,除非你將數據嵌套在一個對象中。唯一的缺點是創建/解析的複雜性略有增加。

所以不是

[datum0, datum1, datumN] 

你必須

{data: [datum0, datum1, datumN]} 

再後來,你可以添加更多...

{status: "foo", data: [datum0, datum1, datumN]} 
83

的區別是相同的(哈希)地圖vs列表。

的JSONObject:

  • 包含名爲值(鍵 - >值對,元組或任何你想打電話給他們)
    • {ID : 1}
  • 元素的順序是不重要
    • {id: 1, name: 'B'}的JSONObject等於{name: 'B', id: 1}

JSONArray:

  • 只包含一系列值
    • [1, 'value']
  • 值的順序很重要
    • 陣列的[1,'value']是不一樣的['value',1]

JSON Object --> { "":""} 

JSON Array --> [ , , , ] 

{"employees":[ 
    {"firstName":"John", "lastName":"Doe"}, 
    {"firstName":"Anna", "lastName":"Smith"}, 
    {"firstName":"Peter", "lastName":"Jones"} 
]} 
+3

這是這組中最有趣的答案 – dynamic

18

最佳編程瞭解。

當語法是{}那麼這是JsonObject

當語法是[]那麼這是JsonArray

希望這對您有所幫助!

9

object:一個對象是一組無名的名稱/值對。一個對象以{(左大括號)開始並以}(右大括號)結束。每個名稱後跟:(冒號),名稱/值對由(逗號)分隔。

enter image description here

陣列:數組是值的有序集合。數組以[(左括號)開始,以[]結尾(右括號)。值由(逗號)分隔。

enter image description here