getJSONArray() in GraphResponse Cannot be applied to java.lang.String - Facebook

一个人想着一个人 提交于 2019-12-12 04:06:06

问题


i have develop a android application integrate with facebook login now i want to make facebook app invite function(invitable_friends api) but in my code i got red underline errors.

  private void loadFriendsFromFacebook(final String str) {
    final AccessToken accessToken = AccessToken.getCurrentAccessToken();
    new GraphRequest(AccessToken.getCurrentAccessToken(), str, null, HttpMethod.GET,
            new GraphRequest.Callback() {
                List<String> s = new ArrayList();
                List<String> F = new ArrayList();
                List<String> G = new ArrayList();
                String t = "";
                String u = "";
                int w = 0;
                boolean x = false;
                String[] y = new String[2];
                String E = "";
                OnInviteListener onInviteListener = null;

                public void onCompleted(GraphResponse response) {
                    SharedPreferences.Editor edit = getSharedPreferences("friendsData", 0).edit();

                    try {
                int i;
                JSONArray jSONArray = response.getJSONArray("data");
                for (i = 0; i < jSONArray.length(); i++) {
                    this.s.add(jSONArray.getJSONObject(i).getString(Page.Properties.ID));
                }
                for (i = 0; i < jSONArray.length(); i++) {
                    this.G.add(jSONArray.getJSONObject(i).getJSONObject(Page.Properties.PICTURE).getJSONObject("data").getString("url"));
                    edit.putString("friendPhoto", jSONArray.getJSONObject(i).getJSONObject(Page.Properties.PICTURE).getJSONObject("data").getString("url"));
                    this.F.add(jSONArray.getJSONObject(i).getString(Page.Properties.NAME));
                    edit.putString("friendName", jSONArray.getJSONObject(i).getString(Page.Properties.NAME));
                }
                edit.commit();
                for (i = 0; i < this.s.size(); i++) {
                    this.u += ((String) this.s.get(i)) + ",";
                }
                JSONObject jSONObject2 = response.getJSONObject("paging");
                if (jSONObject2.toString().contains("next")) {
                    this.t = jSONObject2.getString("next").toString();
                } else if (this.s.size() < 1) {
                    this.x = true;
                }

            } catch (Exception e) {
                System.out.println("Exception=" + e);
                e.printStackTrace();
            }

        }
    }).executeAsync();

}

where the response.getJSONArray("data");

data is underline red which is click rover shows getJSONArray() in graphrespone cannot be applied to java.lang.sting..

and same error in the response.getJSONObject("paging");

Can anyone please tell me what is wrong in the code? it will be appreciated..


回答1:


From here (https://developers.facebook.com/docs/reference/android/current/class/GraphResponse/) I can see that getJSONObject() and getJSONArray() do not have parameters at all. You should retrieve the object respective the array from the GraphResponse using this methods and once you have a JsonObject or JsonArray you can access specific fields.

response.getJSONArray() will give you an object of type JSONArray and response.getJSONObject() will give you an object of type JSONObject. Using this objects you can access the fields using jsonObject.getString("user_id") or similar (see docs.oracle.com/javaee/7/api/javax/json/JsonObject.html)



来源:https://stackoverflow.com/questions/34759464/getjsonarray-in-graphresponse-cannot-be-applied-to-java-lang-string-facebook

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!