2017-09-16 97 views
0

我使用Flickr API讓我的應用根據用戶搜索顯示圖像。我不斷收到此錯誤:JSONException: No value for photoJSONException:沒有照片的值

的調用來獲取照片:

public ArrayList<Category> processResults(Response response) { 
    ArrayList<Category> categories = new ArrayList<>(); 

    try { 
     String jsonData = response.body().string(); 
     if (response.isSuccessful()) { 
      JSONObject flickrJSON = new JSONObject(jsonData); 
      //json data 
      JSONArray photoJSON = flickrJSON.getJSONArray("photo"); 
     } 
    } 
} 

JSON格式是這樣的:

{ 
    photos: { page: 1, 
       pages: 2165, 
       perpage: 100, 
       total: "216413", 
       photo: [ { id: "37095719122", 
       .... 
    } 
} 
+0

JSON格式是這樣的 照片:{ 頁面:1, 頁:2165, perpage:100, 總:「216413 「, photo:[ { id:」37095719122「, – grace

+0

由於'new JSONObject()'接受這個字符串,我猜測它是一個有效的JSON對象,在這種情況下,字符串應該以'{'開始而不是與'照片'。 – ZeekHuge

回答

0

因爲你的代碼的new JSONObject()部分工作正常,其安全假設你得到的JSON對象是有效的,在這種情況下,你實際的JSON對象看起來像這樣:

{ 
    photos: { page: 1, 
       pages: 2165, 
       perpage: 100, 
       total: "216413", 
       photo: [ { id: "37095719122", 
       ..... 
    } 
} 

變量flickerJSON將包含此整個對象,並且它具有的唯一字段是photos,而您嘗試訪問的photo字段是photos對象的內部字段。

因此,您可以訪問photo場這樣的:

JSONArray photoJSON = flickrJSON.getJSONObject("photos").getJSONArray("photo"); 
+0

謝謝你這個工作。然而,我的應用程序現在顯示imageUrl而不是實際的圖像。關於如何解決這個問題的任何想法,我是Android新手抱歉 – grace

+0

您需要使用該URL下載該圖像。此外,由於這將是一個完全不同的話題,您可能希望將此答案標記爲已接受的答案。 – ZeekHuge