GraphResponse 中的 getJSONArray() 无法应用于 java.lang.String - Facebook

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

我已经开发了一个 android 与 facebook 登录集成的应用程序,现在我想制作 facebook 应用程序邀请功能(invitable_friends api)但是在我的代码中出现红色下划线错误。

  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();

}

其中 response.getJSONArray("data");

数据是红色下划线,这是 click rover 显示 getJSONArray() in graphrespone cannot be applied to java.lang.sting..

和 response.getJSONObject("paging");

中的相同错误

任何人都可以告诉我代码中有什么问题吗? 不胜感激..

从这里(https://developers.facebook.com/docs/reference/android/current/class/GraphResponse/)可以看出getJSONObject()getJSONArray()根本就没有参数。您应该使用此方法从 GraphResponse 中检索相应数组的对象,一旦您拥有 JsonObjectJsonArray,您就可以访问特定字段。

response.getJSONArray() 会给你一个 JSONArray 类型的对象,response.getJSONObject() 会给你一个 JSONObject 类型的对象。使用此对象,您可以使用 jsonObject.getString("user_id") 或类似方式访问字段(请参阅 docs.oracle.com/javaee/7/api/javax/json/JsonObject.html)