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
中检索相应数组的对象,一旦您拥有 JsonObject
或 JsonArray
,您就可以访问特定字段。
response.getJSONArray()
会给你一个 JSONArray
类型的对象,response.getJSONObject()
会给你一个 JSONObject
类型的对象。使用此对象,您可以使用 jsonObject.getString("user_id")
或类似方式访问字段(请参阅 docs.oracle.com/javaee/7/api/javax/json/JsonObject.html)
我已经开发了一个 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
中检索相应数组的对象,一旦您拥有 JsonObject
或 JsonArray
,您就可以访问特定字段。
response.getJSONArray()
会给你一个 JSONArray
类型的对象,response.getJSONObject()
会给你一个 JSONObject
类型的对象。使用此对象,您可以使用 jsonObject.getString("user_id")
或类似方式访问字段(请参阅 docs.oracle.com/javaee/7/api/javax/json/JsonObject.html)