2015-05-24 144 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

相关问题