6

現在の Facebook API v3.0.2.b は、応答を保持する com.facebook.Response オブジェクトを返します。これを解析する方法を知っていますか?次のコードは例外を発生させます:(

//execute the request
Request request = new Request
(
    session,
    "/fql",
    params,
    HttpMethod.GET,
    new Request.Callback()
    {
        @Override
        public void onCompleted( Response response )
        {
            try
            {
                JSONArray json = new JSONArray( response.toString() );
            }
            catch ( Throwable t )
            {
                System.err.println( t );
            }
        }
    }
);
Request.executeBatchAsync( request );

エラーメッセージには次のように記載されています。

org.json.JSONException: Unterminated object at character 25 of {Response:  responseCode: 200, graphObject: GraphObject{graphObjectClass=GraphObject, state={"data":[{"pic_square":.....

誰もが正しい解決策を知っていますか? 使いましょうか

GraphObject go = response.getGraphObject();

..それでGraphUser-Objectsを取得するにはどうすればよいですか?

申し訳ありませんが、これは些細な問題のように思えますが、Response-object の処理は facebook のドキュメントでは十分に文書化されておらず、ウェブ上でこれについて何も受け取ることができませんでした :(

事前にどうもありがとうございました!

こんにちはクリストファー

4

1 に答える 1

31

これは私にとってうまくいった解決策です-応答を調査し、いくつかの方法で少し遊んでみましたが、最終的に解決しました:)

/************************************************************************
*   Parses the user data from the facebook FQL
*
*   "SELECT uid, name, pic_square FROM user WHERE uid IN ( SELECT uid2 FROM friend WHERE uid1 = me() )"
*
*   This is the example query from
*   {@link http://developers.facebook.com/docs/howtos/androidsdk/3.0/run-fql-queries/}
*
*   @param  response    The facebook response from the FQL
************************************************************************/
public static final void parseUserFromFQLResponse( Response response )
{
    try
    {
        GraphObject go  = response.getGraphObject();
        JSONObject  jso = go.getInnerJSONObject();
        JSONArray   arr = jso.getJSONArray( "data" );

        for ( int i = 0; i < ( arr.length() ); i++ )
        {
            JSONObject json_obj = arr.getJSONObject( i );

            String id     = json_obj.getString( "uid"           );
            String name   = json_obj.getString( "name"          );
            String urlImg = json_obj.getString( "pic_square"    );

            //...

        }
    }
    catch ( Throwable t )
    {
        t.printStackTrace();
    }
}

これがいつか誰かに役立つことを願っています。

ご挨拶

クリストファー

アップデート

GraphObject はもはやクラスではありません。

JSONObject  jso = response.getJSONObject();
JSONArray   arr = jso.getJSONArray("data");
于 2012-12-13T16:24:31.210 に答える