2010-10-09 51 views
1

我有這樣的JSON解析解析JSON,如何以及何時使用迭代器(Android的平臺)不知道

{"files_informations": { 
         "row":{"value":"artist1"}, 
         "row":{"value":"artist2"} 
         } 
} 

我想知道我如何能得到的第一個值artist1,然後第二個artist2

這是我在做什麼:

JSONObject myObject = jObject.getJSONObject("files_informations"); 
JSONObject rowObject = myObject.getJSONObject("row"); 
Iterator<JSONObject> rowIt = rowObject.keys(); 

while (rowIt.hasNext()) { 
    JSONObject tmp = rowIt.next();    
    Log.e("", tmp.getString("value")); 
} 

我java.lang.classCastExce ption此JSONObject tmp = rowIt.next();

因此,有我的兩個問題

  • 我需要在這種情況下, 使用迭代器?
  • 如何一個要使用它們?

編輯:

如若JSON看起來是這樣的?

{"files_informations": [ 
         "row":{"value":"artist2"}, 
         "row":{"value":"artist1"} 
         ] 
} 
+1

你的JSON可能有一個問題:你的files_information鍵與鍵「行」兩個值,並解析時,第二次將實際覆蓋第一個。你應該爲files_information使用一個數組。 – TuomasR 2010-10-09 16:12:06

+0

感謝您的評論。我編輯了我的帖子。你認爲JSON應該看起來像我發佈的那個嗎? – Spredzy 2010-10-09 16:21:47

+0

你編輯的版本是沒有有效的JSON。 – whiskeysierra 2010-10-09 17:55:31

回答

2

rowIt.next()在這種情況下是「行」String

重構您的JSON這樣:

{"files_informations": 
    [ {"value":"artist2"}, 
    {"value":"artist1"} ] } 

甚至這樣的:

{ "files_informations": [ "artist2", "artist1" ] } 

,然後使用:

JSONArray artistsArr = myObject.getJSONArray("files_informations"); 
for (int i = 0; i < artistsArr.size(); i++) { 
    // first case 
    Log.d(TAG, artistsArr.get(i).getString("value")); 
    // Second case 
    Log.d(TAG, artistsArr.getString(i)); 
} 

迭代器不JSONArrays支持,但是你可以轉換如果你真的需要它們,它們將轉換爲普通的Java數組/列表。

相關問題