将GraphResponse转换为json响应

时间:2016-05-27 12:15:36

标签: android json facebook

我想在Facebook上发布一些消息并获得帖子的id。 以下是我的代码。

 post.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Bundle params = new Bundle();
            params.putString("message", "This is a test message");
            /* make the API call */
            new GraphRequest(
                AccessToken.getCurrentAccessToken(),
                "/me/feed",
                params,
                HttpMethod.POST,
                new GraphRequest.Callback() {
                    public void onCompleted(GraphResponse response) {

                        /* handle the result */


                    }
                }
            ).executeAsync();               
        }
    });

我得到了这样的回复:

{
    Response: { responseCode: 200 },
    graphObject: {"id":"173048733066533_234919673546105"}, 
    error: null
}

我需要来自graphObject回复的“id”。

2 个答案:

答案 0 :(得分:0)

你可以试试这段代码,

 try {
    JSONObject jsonObject=new JSONObject(response.getRawResponse());
    JSONArray results = jsonObject.getJSONArray("graphObject");
    JSONObject first = results.getJSONObject(0);
    JSONObject shipper = first.getJSONObject("id");
    String id = shipper.getString("id");
    Log.d("id",id);

}catch (JSONException e){

}

虽然您可以测试,但未经过测试。

答案 1 :(得分:0)

查看官方Facebook文档here

如果您执行异步(Request.executeAsync())请求,则将使用带有 onCompleted(响应响应)方法的Request.Callback。如果您连续执行请求(确保您不在主线程上),则响应将是 Request.executeAndWait()方法返回的值。

从Response对象中,您可以调用 response.getGraphObject()。getInnerJsonObject()

示例:

 JSONObject graphResponse = response.getGraphObject().getInnerJSONObject();
                    String postId = null;
                    try {
                        postId = graphResponse.getString("id");
                    } catch (JSONException e) {
                        Log.i("Facebook error", "JSON error " + e.getMessage());
                    }

我希望它有效。