解析Facebook FQL的响应并以适当的格式显示它

时间:2013-02-02 09:52:01

标签: android facebook facebook-fql

如何在使用Facebook API的活动中使用我的应用程序获取朋友列表?目前使用Facebook API开发应用程序向安装了我的应用程序的用户显示朋友列表。我尝试使用Graph API浏览器,例如" 我/朋友?字段=名称,赞,已安装"但我想知道如何在我的Android App Activity中获得所需的结果。 现在我可以使用FQL查询来获取它:

{Response:responseCode:200, graphObject:GraphObject{graphObjectClass=GrahObject,state=
    {
  "data": [
    {
      "uid": xxxx98471, 
      "name": "ABC"
    }, 
    {
      "uid": xxx425672424, 
      "name": "XYZ"
    }
  ]
},error:null, isFromCache:false}

那么如何格式化此输出并以适当的方式显示它: 姓名:ABC 名称:XYZ 在listview左右...... 我尝试过使用:

public void onCompleted(Response response) {
                GraphObject graphObject = response.getGraphObject();
                String s = textViewResults.getText().toString();
                if (graphObject != null) {
                    if (graphObject.getProperty("id") != null) {
                        s = s + String.format("%s: %s\n", 
                                graphObject.getProperty("id"), 
                                graphObject.getProperty("name"));
                    }
                }
                textViewResults.setText(s);
            }
        }));
    }
    request.executeAsync();

我得到" null"在结果中。所以现在任何人都可以告诉我如何解析这种类型的回复。任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:13)

public void onCompleted(Response response) {
                GraphObject graphObject = response.getGraphObject();
                String s = textViewResults.getText().toString();
                if (graphObject != null) {
                    JSONObject jsonObject = graphObject.getInnerJSONObject();
                    try {
                     JSONArray array = jsonObject.getJSONArray("data");
                     for (int i = 0; i < array.length(); i++) {
                         JSONObject object = (JSONObject) array.get(i);
                         Log.d(TAG, "id = "+object.get("id"));
                      }
                } catch (JSONException e) {

                 e.printStackTrace();
                }
         }
                textViewResults.setText(s);
            }
        }));
}
request.executeAsync();

答案 1 :(得分:2)

试试这个:

  JSONObject json = Util.parseJson(mFacebook.request("me/friends"));
            final JSONArray friends = json.getJSONArray("data");
            if (friends != null) {
                for (int i = 0; i < friends.length(); i++) {
                    String id =
              friends.getJSONObject(i).getString("id");                     
                    String name = friends.getJSONObject(i).getString("name");
                        Log.i(id,name);
                }
            }