簡體   English   中英

解析JSON數據時應用程序崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM