2014-12-04 85 views
2

你好如何從另一個Json數組中的Json數據中獲取數據我已經獲取數據直到附件但附件不工作,所有的代碼工作直到附件如何從附件中獲取數據我需要從它那裏得到 「photo_75」從Json數組中獲取數據Android Java

的Json

"response":{ 
    "count":3, 
    "items":[ 
    { 
     "id":3, 
     "from_id":205110032, 
     "owner_id":-81865402, 
     "date":1417672154, 
     "post_type":"post", 
     "text":"jjjjASDFGHJKYTRDXCVB", 
     "attachments":[ 
      { 
       "type":"photo", 
       "photo":{ 
       "id":330414711, 
       "album_id":-7, 
       "owner_id":205110032, 
       "photo_75":"http:\/\/cs605116.vk.me\/v605116032\/6325\/3SwTo8j4lJ0.jpg", 
       "photo_130":"http:\/\/cs605116.vk.me\/v605116032\/6326\/_OZA86FO3Nw.jpg", 
       "photo_604":"http:\/\/cs605116.vk.me\/v605116032\/6327\/AUtB59708Nw.jpg", 
       "photo_807":"http:\/\/cs605116.vk.me\/v605116032\/6328\/59oAdfz9jgI.jpg", 
       "width":538, 
       "height":807, 
       "text":"", 
       "date":1399134687, 
       "access_key":"7297eb663de2e4e6b2" 
       } 
      } 
     ], 
     "comments":{ 
      "count":0 
     }, 
     "likes":{ 
      "count":0 
     }, 
     "reposts":{ 
      "count":0 
     } 
    }, 

的Java

private void parseJsonFeed(JSONObject response) { 
    try { 
     JSONObject parent = response.getJSONObject("response"); 

     JSONArray feedArray = parent.getJSONArray("items"); 

     for (int i = 0; i < feedArray.length(); i++) { 
      JSONObject feedObj = (JSONObject) feedArray.get(i); 

      FeedItem item = new FeedItem(); 
      item.setId(feedObj.getInt("id"));   


      item.setName(feedObj.getString("post_type")); 
      item.setTimeStamp(feedObj.getString("date")); 


      // Image might be null sometimes 
      String image = feedObj.isNull("photo") ? null : feedObj 
        .getString("photo"); 
      item.setImge(image); 
      item.setStatus(feedObj.getString("text")); 

     All code work till there how to get data from attachments 
      ***JSONObject response1 = response.getJSONObject("response"); 
      feedArray = parent.getJSONArray("items");*** 

      JSONArray feedArray1 = response1.getJSONArray("attachments"); 

      for (int i1 = 0; i1 < feedArray1.length(); i1++) { 
       JSONObject feedObj1 = (JSONObject) feedArray1.get(i1); 

       FeedItem item1 = new FeedItem(); 

       item.setProfilePic(feedObj1.getString("photo_75")); 


      } 



      // url might be null sometimes 
      String feedUrl = feedObj.isNull("url") ? null : feedObj 
        .getString("url"); 
      item.setUrl(feedUrl); 

      feedItems.add(item); 
     } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
} 

在此先感謝

+0

你需要一個/獲取attachement jsonarray。 b /在這個數組上的循環c /搜索具有'type =='photo''的jsonobject d /獲取照片jsonobject e /獲取您需要的photo_75屬性。或者,製作一個模型,並將其放入gson中。 – njzk2 2014-12-04 16:42:22

+0

但如何進入附件陣列 – Sultan 2014-12-04 16:48:36

+0

我需要輸入並獲得,因爲我得到沒有價值異常 – Sultan 2014-12-04 16:49:37

回答

4

您正在尋找錯誤對象中的附件。 「attachmetnts」是item的屬性。的

代替
JSONArray feedArray1 = response1.getJSONArray("attachments"); 

使用

JSONArray feedArray1 = feedObj.getJSONArray("attachments"); 

你的情況feedObj包含項目對象。

,以達到照片: 刪除線:

 String image = feedObj.isNull("photo") ? null : feedObj 
       .getString("photo"); 
     item.setImge(image); 

並將其更改爲:

for (int i1 = 0; i1 < feedArray1.length(); i1++) { 
      JSONObject attachment = (JSONObject) feedArray1.get(i1); 
      JSONObject photo = (JSONObject) attachment.getJSONObject("photo"); 
      item.setImge(photo); 
      item.setProfilePic(photo.getString("photo_75")); 
      item.setStatus(photo.getString("text")); 
     } 
+0

我應該刪除JSONObject response1 = response.getJSONObject(「response」); feedArray = parent.getJSONArray(「items」); * – Sultan 2014-12-04 17:05:23

+0

如果您僅使用這些語句來獲取「附件」,則可以刪除它們! – aadi53 2014-12-04 17:07:17

+0

如果需要得到照片75 – Sultan 2014-12-05 03:01:44

1

您可以嘗試GSON,它會直接從您的JSON給你一個Java對象,你不必手動解析它。