2012-03-26 94 views
0

我有從服務器到android應用程序的以下數組響應。提取JSON數組元素的過程

[ 
{"1": 
[{"name":"IEEE Meeting"},{"date":"2012-04-24 10:30:00"},{"Room":"ZACH102"},{"descr":"Final Meeting"},{"D":0.0057}]}, 
{"2": 
[{"name":"Senior Design Demo"},{"date":"2012-04-24 16:30:00"},{"Room":"ZACH111A"},{"descr":"Demo"},{"D":0.019}]} 
] 

我在接收到響應後執行到JSONArray的轉換。

arr = new JSONArray(sb.toString()); 

我該如何去提取名稱,日期,房間等個別元素?

回答

0

所以基本上所有的參數,這個順序 對象1,數組中的2 - 每個對象1,2具有不同的對象名稱,日期的陣列,等等。

  1. 將整個數據轉換爲字符串。
  2. 創建一個新的JSONArray(字符串)。
  3. 在陣列上循環。 (你會使用length()來計數)。
  4. 使用getJSONObject()獲取第一個對象。
  5. 使用getJSONArray獲取第一個對象中的數組。
  6. 現在再次使用length(),您將獲得其中的JSONObjects數量。
  7. 循環播放對象的數量並調用getString()或getDouble()後首先獲取JSONObject()。
  8. 重複了其他對象的列表,並重復步驟4 - 7
+0

謝謝!這就是我一直在尋找的東西。 – maknelly 2012-03-26 04:31:21

+0

@maknelly嗨,我剛剛寫了一篇關於Android中JSON解析的教程。既然你最近遇到了一些麻煩,我想知道你是否可以通過它,看看它是否有幫助。謝謝! http://www.shubhayu.com/android/json-parser-tutorial-for-android-using-jsonobjects – Shubhayu 2012-03-28 12:08:30

0

您是否檢出了JSONArray的文檔?

從文檔中,內部表單是一個對象,它具有用於按索引訪問值的getopt方法以及用於添加或替換值的方法put。值可以是以下任何類型:Boolean,JSONArray,JSONObject,NumberStringJSONObject.NULL對象。

A get方法返回一個值,如果可以找到一個值,並且拋出一個異常,如果找不到。一個opt方法返回一個默認值而不是拋出一個異常,所以對於獲取可選值很有用。

通用的get()opt()方法返回一個可以強制轉換或查詢類型的對象。還有類型爲getopt的方法可以爲你進行類型檢查和類型強制。

+0

我在想,如果我不得不選擇由getJSONObject(1)第一個對象,然後從對象我得到的名稱,日期?在第一個對象中,1是數組的關鍵,但是如何從該數組中提取元素? – maknelly 2012-03-26 03:00:19

+0

從你的服務器響應中,你有一個帶有兩個JSONObject類型元素的JSONArray。每個JSONOject都有一個名稱/值對。在你的情況下,值是另一個JSONArray。這個JSONArray有5個也是JSONObject類型的元素。每個這些correpsonds到你的名字,日期房間,等等。 – mcorley 2012-03-26 03:12:43

0

,你可以得到這樣的

JSONArray main_array = json.getJSONArray("array"); 
for(int i=0;i<main_array.length();i++) {    
    main_object = main_array.getJSONObject(i); 
    String name = main_object.getString("name"); 
    String date = main_object.getString("date"); 
}