如何解析Facebook数据

时间:2012-03-14 18:03:46

标签: android facebook facebook-graph-api android-listview

我在解决Facebook数据正确解析方面遇到了一些问题。

我正在努力实现应用程序的一部分,以允许用户在应用程序中选择和使用他们自己的一张Facebook照片。我已经获得了facebook登录/注销代码,我目前正在获取令牌(登录后)以收集用户相册信息。权限集也很好用,但我现在仍然试图让JSON信息正确解析。以下是我需要解析的信息的示例摘录:

 "data": [
  {
     "id": "3486732467234",
     "from": {
        "name": "Persons Name",
        "id": "Persons ID"
     },
     "name": "Vacation",
     "location": "City",
     "link": "https://www.facebook.com/album.php?fbid=434235&id=324343&aid=2430",
     "cover_photo": "3489234432",
     "privacy": "everyone",
     "count": 60,
     "type": "normal",
     "created_time": "2007-06-03T23:01:16+0000",
     "updated_time": "2011-03-18T19:46:43+0000",
     "can_upload": true
  },
  {
     "id": "4043544665",
     "from": {
        "name": "Persons Name",
        "id": "Persons ID"
     },
     "name": "Vacation 2",
     "location": "City",
     "link": "https://www.facebook.com/album.php?fbid=4043434665&id=508154335&aid=2555",
     "cover_photo": "5434543",
     "privacy": "everyone",
     "count": 60,
     "type": "normal",
     "created_time": "2007-06-03T22:53:03+0000",
     "updated_time": "2011-03-18T19:45:55+0000",
     "can_upload": true
  }],
...more paging JSON information ...}}

我需要能够提取相册信息才能在列表中显示相册名称(并在另一个查询中使用该ID)。一旦我可以显示相册,我就会使用这些ID执行另一个查询来获取该相册中的照片。我也可以再次获取该信息,我只是不确定如何正确解析它。

有人可能会将此解析为列表视图的任何有用提示将不胜感激。

我需要定位从第一个列表中提取第一个ID和相册名称(“id”:“3486732467234”和“名称”:“假期”)

2 个答案:

答案 0 :(得分:5)

为什么不尝试使用json类...

类似的东西:

        jsonObject = new JSONObject(your_data);
        jArray = jsonObject.getJSONArray("data");

        for(int i =0;i<jArray.length();i++){

            String name= jArray.getJSONObject(i).getString("name");
            String location= jArray.getJSONObject(i).getString("location");

答案 1 :(得分:4)

在进行Graph API调用时,新的Android Facebook SDK 3.0会在Response.Callback()侦听器中返回一个Response对象。此响应对象可用于创建GraphObject,可用于获取JSON ... ex:

Request graphRequest = Request.newGraphPathRequest(session, graphRequestString, new Request.Callback() {

        @Override
        public void onCompleted(Response response) {
            //Create the GraphObject from the response
            GraphObject responseGraphObject = response.getGraphObject();

           //Create the JSON object
           JSONObject json = responseGraphObject.getInnerJSONObject();

        }
});