【问题标题】:Getting likes data (id and name) from JSONArray - Facebook api从 JSONArray 获取点赞数据(id 和名称) - Facebook api
【发布时间】:2018-06-07 21:44:39
【问题描述】:

我正在尝试从 Android 上 facebook graph api 中的点赞数据中获取 id 和 named:

{
   "data": [
      {
         "id": "1433908706707486_917483885016640"
      },
      {
         "id": "1433908706707486_910831695681859"
      },
      {
         "id": "1433908706707486_906550586109970",
         "likes": {
            "data": [
               {
                  "id": "xxxx",
                  "name": "xxx"
               }
            ],
            "paging": {
               "cursors": {
                  "before": "MTEwNTU0NTg3OTQ2NjE3NgZDZD",
                  "after": "MTEwNTU0NTg3OTQ2NjE3NgZDZD"
               }
            }
         }
      },
      {
         "id": "1433908706707486_902931413138554",
         "likes": {
            "data": [
               {
                  "id": "xxx",
                  "name": "Muhammad Waseem"
               }
            ],
            "paging": {
               "cursors": {
                  "before": "NzI3NTMxNjA0MDA0MDA5",
                  "after": "NzI3NTMxNjA0MDA0MDA5"
               }
            }
         }
      },
      {
         "id": "1433908706707486_134266116671758"
      }
   ],
   "paging": {
      "previous": "https://graph.faceb....",
      "next": "https://graph.faceb...
   }
}

问题出在这里:

12-27 14:56:45.542 21352-21352/com.facebook.pv2 W/System.err: org.json.JSONException: Unterminated object at character 25 of {Response:  responseCode: 200, graphObject: {"data":[{"id":"1781423402174843_1912187512431764"},{"id":"1781423402174843_1906871369630045","likes":{"data":[{"id":"xxx","name":"Umer Hameed"}],"paging":{"cursors":{"after":"NjM5NTg5OTE5NTY0Njk0","before":"NjM5NTg5OTE5NTY0Njk0"}}}},{"id":"1781423402174843_1905874473063068"},{"id":"1781423402174843_1904892806494568","likes":{"data":[{"id":"xxx","name":"Shafiqe Ali"},{"id":"xxx","name":"Ahmad Chauhan"},{"id":"xxx","name":"Umer Hameed"},{"id":"xxx","name":"Arslan Mughal"},{"id":"xxxx","name":"Zahid Rachid"}],"paging":{"cursors":{"after":"NDQ1NTMxMzQ5MTEzNjc0","before":"MTEzNTM5MDgzMzIzOTc4NgZDZD"}}}},{"id":"1781423402174843_1904460023204513","likes":{"data":[{"id":"xxx","name":"Waqas Sunny"},{"id":"xxxx","name":"Arslan Mughal"},{"id":"xxxx","name":"Ahmad Chauhan"}],"paging":{"cursors":{"after":"MTAzMzM2MTg0MzQ2MTk2NwZDZD","before":"Nzc2NDM4NjYyNTEzNDc4"}}}},{"id":"1781423402174843_1904368313213684","likes":{"data":[{"id":"xxxx","name":"Ahmad Chauhan"}],"paging":{"cursors":{"after":"MTAzMzM2MTg0MzQ2MTk2NwZDZD","before":"MTAzMzM2MTg0MzQ2MTk2NwZDZD"}}}},{"id":"1781423402174843_1883311385319377","likes":{"data":[{"id":"1033361843461967","name":"Ahmad Chauhan"},{"id":"639589919564694","name":"Umer Hameed"}],"paging":{"cursors":{"after":"NjM5NTg5OTE5NTY0Njk0","before":"MTAzMzM2MTg0MzQ2MTk2NwZDZD"}}}},{"id":"1781423402174843_1852042315112951","likes":{"data":[{"id":"1263530067099941","name":"Arslan Mughal"},{"id":"1135390833239786","name":"Shafiqe Ali"},{"id":"1033361843461967","name":"Ahmad Chauhan"}],"paging":{"cursors":{"after":"MTAzMzM2MTg0MzQ2MTk2NwZDZD","before":"MTI2MzUzMDA2NzA5OTk0MQZDZD"}}}},{"id":"1781423402174843_1850409191942930","likes":{"data":[{"id":"xxx","name":"Nasir Mughal"},{"id":"xxxx","name":"Shafiqe Ali"},{"id":"xxxx","name":"Taha Sheikh"},{"id":"xxxx","name":"Waqas Sunny"},{"id":"xxxx","name":"Arslan Mughal"},{"id":"xxxx","name":"Zahid Rachid"}],"paging":{"cursors":{"after":"NDQ1NTMxMzQ5MTEzNjc0","before":"MTA4NTMyMzEzODIzOTYxNAZDZD"}}}},{"id":"1781423402174843_1849173595399823","likes":{"data":[{"id":"xxxx","name":"Umer Hameed"},{"id":"xxxx","name":"Waqas Sunny"},{"id":"xxxx","name":"Shafiqe Ali"},{"id":"xxxx","name":"Arslan Mughal"}],"paging":{"cursors":{"after":"MTI2MzUzMDA2NzA5OTk0MQZDZD","before":"NjM5NTg5OTE5NTY0Njk0"}}}},{"id":"1781423402174843_1847584705558712"},{"id":"1781423402174843_1845844379066078","likes":{"data":[{"id":"445531349113674","name":"Zahid Rachid"}],"paging":{"cursors":{"after":"NDQ1NTMxMzQ5MTEzNjc0","before":"NDQ1NTMxMzQ5MTEzNjc0"}}}},{"id":"1781423402174843_1837370286580154","likes":{"data":[{"id":"1135390833239786","name":"Shafiqe Ali"},{"id":"455768698087604","name":"Usama Ishaq"}],"paging":{"cursors":{"after":"NDU1NzY4Njk4MDg3NjA0","before":"MTEzNTM5MDgzMzIzOTc4NgZDZD"}}}},{"id":"1781423402174843_1832619910388525"},{"id":"1781423402174843_1828230240827492"},{"id":"1781423402174843_1828176680832848"},{"id":"1781423402174843_1820949544888895"},{"id":"1781423402174843_1807792559537927","likes":{"data":[{"id":"1120628128049019","name":"Sheheryar Ali Mehar"},{"id":"1033361843461967","name":"Ahmad Chauhan"},{"id":"776438662513478","name":"Waqas Sunny"},{"id":"445531349113674","name":"Zahid Rachid"}],"paging":{"cursors":{"after":"NDQ1NTMxMzQ5MTEzNjc0","before":"MTEyMDYyODEyODA0OTAxOQZDZD"}}}},{"id":"1781423402174843_1790316361285547"},{"id":"1781423402174843_1787495658234284"},{"id":"1781423402174843_1780168658966984","likes":{"data":[{"id":"xxxx","name":"Tahir Farooq"},{"id":"xxxx","name":"Shafiqe Ali"},{"id":"xxxx","name":"Arslan Mughal"}],"paging":{"cursors":{"after":"MTI2MzUzMDA2NzA5OTk0MQZDZD","before":"MTAyMTA4NTE2NzY3NTk1MTEZD"}}}},{"id":"1781423402174843_1775850492732

我已经批准了来自 facebook 的 user_posts 权限,并且我的代码只获取用户的墙贴,请帮助获取喜欢我帖子的 id 和名称。谢谢

【问题讨论】:

  • 有什么问题。?你卡在哪里了..!!
  • 我已经用堆栈编辑了问题
  • @ahsen 请检查我的回答。

标签: android facebook facebook-graph-api


【解决方案1】:

试试这个

try {

        JSONObject resObject = new JSONObject("your response");
        JSONArray jsonArray = resObject.getJSONArray("data");

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

            JSONObject jsonObject = jsonArray.getJSONObject(i);

            Log.i("ID", "-->" + jsonObject.getString("id"));
            Log.i("Likes", "-->" + jsonObject.getString("likes"));

            JSONObject jsonObjectlikes = jsonObject.getJSONObject("likes");

            JSONArray jsonArrayLikeData = jsonObjectlikes.getJSONArray("data");

            for (int j = 0; j < jsonArrayLikeData.length(); j++) {

                JSONObject jsonObjectlike = jsonArrayLikeData.getJSONObject(i);
                Log.i("Like ID", "-->" + jsonObjectlike.getString("id"));
                Log.i("Like Name", "-->" + jsonObjectlike.getString("name"));
            }


        }


    }
    catch (JSONException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

编辑

new GraphRequest(
        AccessToken.getCurrentAccessToken(),
"/me/posts",
parameters,
HttpMethod.GET,
        new GraphRequest.Callback() {
    public void onCompleted(GraphResponse response) {
    /* handle the result */
        //Log.v("TAG", "Facebook Photos response: " + response);

        try {
            if (response.getError() == null) {


                JSONObject resObject = new JSONObject(response);
                JSONArray jsonArray = resObject.getJSONArray("data");

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

                    JSONObject jsonObject = jsonArray.getJSONObject(i);

                    Log.i("ID", "-->" + jsonObject.getString("id"));
                    Log.i("Likes", "-->" + jsonObject.getString("likes"));

                    JSONObject jsonObjectlikes = jsonObject.getJSONObject("likes");

                    JSONArray jsonArrayLikeData = jsonObjectlikes.getJSONArray("data");

                    for (int j = 0; j < jsonArrayLikeData.length(); j++) {

                        JSONObject jsonObjectlike = jsonArrayLikeData.getJSONObject(i);
                        Log.i("Like ID", "-->" + jsonObjectlike.getString("id"));
                        Log.i("Like Name", "-->" + jsonObjectlike.getString("name"));
                    }


                }

                //set your adapter here

            } else {
                Log.v("TAG", response.getError().toString());
            }
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}).executeAsync();

编辑新的

try 
{
    JSONObject resObject = new JSONObject("your response");
    JSONArray jsonArray = resObject.getJSONArray("data");


        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);

            Log.i("ID", "-->" + jsonObject.getString("id"));

            if(jsonArray.getJSONObject(i).has("likes"))
            {

                JSONObject jsonObjectlikes = jsonObject.getJSONObject("likes");

                JSONArray jsonArrayLikeData = jsonObjectlikes.getJSONArray("data");

                for (int j = 0; j < jsonArrayLikeData.length(); j++) {

                    JSONObject jsonObjectlike = jsonArrayLikeData.getJSONObject(j);

                    Log.i("Like ID", "-->" + jsonObjectlike.getString("id"));
                    Log.i("Like Name", "-->" + jsonObjectlike.getString("name"));
                }

            }



        }
}
catch (JSONException e)
{
     // TODO Auto-generated catch block
     e.printStackTrace();
}

输出

【讨论】:

  • 12-27 14:11:27.403 10582-10582/com.facebook.pv2 I/ID: -->1781423402174843_1912187512431764 12-27 14:11:27.404 10582-10582/com.pv2 W/System.err: org.json.JSONException: 喜欢没有价值
  • 我想得到喜欢我帖子的人的id,而不是帖子id
  • @ahsen 你被困在哪里了兄弟。
  • org.json.JSONException: 点赞没有价值
  • @ahsen 请将原始回复发给我
【解决方案2】:
JSONObject object = new JSONObject("YOUR_RESPONSE");
        if (object.has("data")) {
            JSONArray jaData = object.getJSONArray("data");
            for (int i = 0; i < jaData.length(); i++) {
                JSONObject likeObject = jaData.getJSONObject(i).getJSONObject("likes");
                JSONArray likeDeatilArray = likeObject.getJSONArray("data");
                for (int j = 0; j < likeDeatilArray.length(); j++) {
                    String id = likeDeatilArray.getJSONObject(j).optString("id");
                    String name =  likeDeatilArray.getJSONObject(j).optString("name");

                    Log.v("name -", id+" name -"+name);
                }
            }

        }

希望这会有所帮助..

【讨论】:

  • org.json.JSONException: 点赞没有价值
  • 是的..可能的..如果喜欢对象中没有可用的数据。你必须处理它
  • 第一个帖子 id 没有类似的数据,但第二个有类似的数据
  • 所以把try catch块放在那里处理。
猜你喜欢
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
相关资源
最近更新 更多