java - 解析 JSON 数据时应用程序崩溃

标签 java android json facebook facebook-graph-api

大家好,我正在尝试获取用户喜欢的页面列表。 首先,信息如下:

{
  "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”元素。

关于java - 解析 JSON 数据时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32810458/

相关文章:

java - 获取下一个同名 Android 的 Jsoup 元素

java - 如何最好地将长字符串保存到数据库?

javascript - 我正在使用 Photo Sphere Viewer,现在我想将全景图像替换为新图像,而无需重新加载页面

java - Hibernate 多对多双向 - 双向 @JsonManagedReference 和 @JsonBackReference

java - 如何从 HashMap 中检索值

android - 从服务调用正在运行的 Activity 中的方法

java - 导入自定义类 : several errors (e. g。 java:不是一个声明)

java - 如何在 for 循环中自动递增变量名?

java - 将变量转换为最终变量

java - 如何使用 poi 读取 excel 文件中的空单元格以及如何将此空单元格添加到数组列表?