2011-07-22 33 views
1

我正在嘗試製作一個小應用程序(圖像庫來自Web的圖像,是我從我收到的JSON文件獲取的網址)。 JSON的背景下看起來像這樣:Android中的JSON問題(對象消失)

{"images":{ 
    "yXVak":{ 
     "image_hash":"yXVak", 
      "imgur_page":"http:\/\/imgur.com\/yXVak", 
      "original_image":"http:\/\/imgur.com\/yXVak.gif", 
      "large_thumbnail":"http:\/\/imgur.com\/yXVakl.gif", 
      "small_thumbnail":"http:\/\/imgur.com\/yXVaks.gif", 
       "message":"I didn't know they made you see THAT well.", 
       "source":" ", 
        "date_popular":"2011-07-18 18:45:05"}, 

..... 我有大約30多個對象,看起來像「yXVak」。

現在,問題是,當我試圖解析文本時,程序找不到對象「yXVak」,異常看起來像這樣:org.json.JSONException:JSONObject [「yXVak」]未找到。 我解析JSON文件那樣:

jObject = new JSONObject(jString); 
        JSONObject jImages = jObject.getJSONObject("images"); 
        getImages(jImages); 

getImages功能看起來像這樣:

JSONObject jHash = jImages.getJSONObject("yXVak") ; 
      String hash = jHash.getString("yXVak"); 
      String page = jHash.getString("http:\\/\\/imgur.com\\/yXVak"); 
      Image[] images = new Image[3]; 
      images[0] = new Image(jHash.getString("original_image"), jHash.getString("http:\\/\\/imgur.com\\/yXVak.gif")); 
      images[1] = new Image(jHash.getString("large_thumbnail"), jHash.getString("http:\\/\\/imgur.com\\/yXVakl.gif")); 
      images[2] = new Image(jHash.getString("small_thumbnail"), jHash.getString("http:\\/\\/imgur.com\\/yXVaks.gif")); 
      String message = jHash.getString("I didn't know they made you see THAT well."); 
      String source = jHash.getString(" "); 
      String date = jHash.getString("2011-07-18 18:45:05"); 
      listOfImages.add(new ImageHash(hash, page, images, message, source, date)); 

...

通過調試我發現的jstring對象向右看(整個字符串在文件中),但jImages對象缺少兩個第一個對象(「yXVak」,第二個我沒有在這裏顯示「6k9yE」)。 有人可以幫我,請問我做錯了什麼?

回答

3

我的事情,你應該改變這種線在你getImages功能: -

JSONObject jHash = jImages.getJSONObject("yXVak"); 
//Changes in this lines. 
String hash = jHash.getString("image_hash"); 
String page = jHash.getString("imgur_page"); 
// Rest of your code is same. 

請試試這個out.I認爲,這將解決您的問題,

+0

感謝的人,我不相信我做了這個愚蠢的錯誤,但我有一個問題:有沒有什麼方法可以重用此代碼(除了用所有的getString()函數編寫函數),我的意思是以某種方式遍歷所有的JSONObject,通過循環或其他? – user854787

+0

嗨@ user854787,歡迎來到StackOverFlow.I沒有很好地解決你的問題。但是我告訴你,如果你的響應包含多個JSONObject'yXVak',那麼你可以通過循環。否則你堅持使用getString()。 –