在Android应用中解析JSON时出错?

时间:2016-02-29 11:58:21

标签: android json

我有这样的字符串json:

{
  "listResult": {
    "items": [
      {
        "id": "629047db-66d9-4986-ba3f-c75554198138",
        "thumbnail": "http://maya-wdv-01.r.worldssl.net/39aa32db-6f50-4da1-8fd5-a5b001135b98/629047db-66d9-4986-ba3f-c75554198138/8cb69c17-0fdb-454c-bfb5-a5b9001a9d59.jpg"
      },
      {
        "id": "fa872dc8-d2b3-4815-92ef-d90e903bc3d8",
        "thumbnail": "http://maya-wdv-01.r.worldssl.net/39aa32db-6f50-4da1-8fd5-a5b001135b98/fa872dc8-d2b3-4815-92ef-d90e903bc3d8/c510c24f-5bfd-4a64-8851-a5b90017a38d.jpg"
      }
    ],
    "totalItems": 34,
    "pageSize": 5,
    "pageNumber": 1,
    "totalPages": 7,
    "searchTerm": null
  }
}

我尝试使用代码进行解析:

try {
            JSONObject json = new JSONObject(response);
            String listResult = json.getString(Variabel.listResult);
            JSONArray items_obj = json.getJSONArray(Variabel.items);
            int jumlah_list_data = items_obj.length();
            if (jumlah_list_data > 0) {
                for (int i = 0; i < jumlah_list_data; i++) {
                    JSONObject obj = items_obj.getJSONObject(i);
                    String id = obj.getString(Variabel.id);
                    String thumbnail = obj.getString(Variabel.thumbnail);

                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

但是我得错误了:

  

org.json.JSONException:没有项目值

那怎么解决呢?抱歉我的英文

2 个答案:

答案 0 :(得分:2)

根据您发布的json,项目是listResult的直接子项,因此您必须使用带有JSONObject键的listResult来检索它。变化

  JSONArray items_obj = json.getJSONArray(Variabel.items);

  JSONArray items_obj = listResult.getJSONArray(Variabel.items);

答案 1 :(得分:2)

而不是:

 JSONObject json = new JSONObject(response);
 String listResult = json.getString(Variabel.listResult);               
 JSONArray items_obj = json.getJSONArray(Variabel.items);

你应该:

  JSONObject json = new JSONObject(response);
  JSONObject listResult = json.getJSONObject(Variabel.listResult);
  JSONArray items_obj = listResult.getJSONArray(Variabel.items);