2015-05-24 140 views
0

我收到來自Flickr API的JSON響應是這樣的:

{ 
    "photos": { 
    "page": 1, 
    "pages": 1, 
    "perpage": 100, 
    "total": 2, 
    "photo": [ 
     { 
     "id": "14774811932", 
     "owner": "[email protected]", 
     "secret": "cbb99f0039", 
     "server": "3853", 
     "farm": 4, 
     "title": "Weltschmerz", 
     "ispublic": 1, 
     "isfriend": 0, 
     "isfamily": 0, 
     "date_faved": "1432471819" 
     }, 
     { 
     "id": "13274800365", 
     "owner": "[email protected]", 
     "secret": "b652859e6a", 
     "server": "3688", 
     "farm": 4, 
     "title": "cactus desert", 
     "ispublic": 1, 
     "isfriend": 0, 
     "isfamily": 0, 
     "date_faved": "1432466782" 
     } 
    ] 
    }, 
    "stat": "ok" 
} 

,我需要得到一個ArrayList兩個Photo對象。

我的代碼是:

Helper helper = new Helper(this); 
    String jsonString = helper.loadJSONFromAsset(); 
    Gson gson = new Gson(); 
    Photos photos = gson.fromJson(jsonString, 
       new TypeToken<Photos>() { }.getType()); 
    // ArrayList<Photo> photos = gson.fromJson(jsonString, 
    //    new TypeToken<ArrayList<Photo>>(){}.getType()); 

目前我加載從資產的文件。當這個工作我就改成了Flickr API

照片類:

public class Photos { 
    Integer page; 
    Integer pages; 
    Integer perpage; 
    Integer total; 
    ArrayList<Photo> photos; 
    String stat; 


//getters and setters here 

我的理解是,我必須先提取photos項目,然後從項目中提取陣列photo所以我可以得到我需要的ArrayList。

+0

你的照片類是什麼樣的? –

+0

@BidhanA剛剛用代碼更新了答案。 – vicolored

回答

1

我認爲你必須創建GSON TypeToken這樣的:

public class Photos { 
    Integer page; 
    Integer pages; 
    Integer perpage; 
    Integer total; 
    ArrayList<Photo> photo; 
    String stat; 

    //setters and getters 

} 

通過這種方式,你可以複製Flickr的JSON和GSON將正確映射JSON:

Photos photos = gson.fromJson(jsonString, 
      new TypeToken<Photos>(){}.getType()); 

那麼你可以將你的照片ArrayList與:

photos.getPhoto(); 
+0

仍然是相同的錯誤:/ – vicolored

+0

嘗試向後退一步。創建一個包含Photos屬性的FlickrResponse類 – nicopasso

+0

hmmm ...有趣。我會盡快檢查。 – vicolored

相關問題