[英]Application crashs while parsing JSON data
大家好,我正在嘗試獲取用戶喜歡的頁面的列表。 首先,這是信息的外觀:
{
"likes": {
"data": [
{
"name": "Page Name Here",
"id": "Page id",
"created_time": "Date"
},
{
"name": "Page Name Here",
"id": "Page id",
"created_time": "Date"
},
{
"name": "Page Name Here",
"id": "Page id",
"created_time": "Date"
}
....
....
....
}
這是我的代碼:
loginButton.setReadPermissions("user_likes");
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GetPagesUrl = "https://graph.facebook.com/v2.4/me?fields=likes.limit(10000){name}&access_token=" + loginResult.getAccessToken().getToken();
JSONObject js = new JSONObject(get_json(GetPagesUrl));
JSONArray jarray = js.getJSONArray("data");
for(int i = 0; i < jarray.length(); i++){
// do whatever with jarray.getJSONObject(i).getJSONString("name");
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
}
});
這是使用的功能get_json()的代碼:
public JSONObject getJson(String url){
InputStream is = null;
String result = "";
JSONObject jsonObject = null;
// HTTP
try {
HttpClient httpclient = new DefaultHttpClient(); // for port 80 requests!
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch(Exception e) {
return null;
}
// Read response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"utf-8"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch(Exception e) {
return null;
}
// Convert string to object
try {
jsonObject = new JSONObject(result);
} catch(JSONException e) {
return null;
}
return jsonObject;
}
**很遺憾,我無法在真實設備上測試我的應用程序,因為我無法創建AVD,所以我無法告訴您我得到了什么錯誤**
謝謝 :)
我相信這個問題是由於
JSONArray jarray = js.getJSONArray("data");
嘗試先訪問"likes"
,然后再訪問"data"
元素。
您應該在JSON方案中的"id": "Page Id"
之后添加一個逗號。
通常,解決此類問題的一種好方法是調試。 只需運行帶有調試的應用程序並在此處使用斷點即可:JSONObject js = new JSONObject(get_json(GetPagesUrl));
如果無法幫助您找到答案,則可以發布js的數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.