2016-05-14 4 views
1

- Я знаю разбор, я успешно проанализировал данные ниже, но при обновлении веб-сервиса мне нужно проанализировать объект внутри объекта. - Я пробовал много примеров, но получал ошибку.Json Parsing object внутри Object get error

Код для парсинга:

private final String KEY_SUCCESS = "status"; 
    private final String KEY_MSG = "Message"; 
    private final String KEY_MSG1 = "Message"; 
    // private final String KEY_AddressList = "addressList"; 
    private final String KEY_USERINFO = "user_info"; 
    ArrayList<HashMap<String, String>> arraylist; 

    private final String KEY_DATA = "data"; 
    private final String KEY_USERDATA = "userdata"; 

public ArrayList<HashMap<String, String>> getList(String response) { 
     try { 
      JSONObject jsonObject = new JSONObject(response); 
      if (jsonObject.getString(KEY_SUCCESS).equals("true")) { 

       arraylist = new ArrayList<HashMap<String, String>>(); 
       JSONArray jsonArray = jsonObject.getJSONArray("data"); 
       for (int i = 0; i < jsonArray.length(); i++) { 

        HashMap<String, String> map = new HashMap<String, String>(); 
        JSONObject obj = jsonArray.getJSONObject(i); 
        // JSONObject job = obj.getJSONObject("User"); 

        Log.d("obj", obj.toString()); 


        String user_id = obj.getString(Constants.Params.ID); 
        String createdate = obj.getStringAndyConstants.Params.CREATEDDATE); 
        String postImage = obj.getString(Constants.Params.IMAGE); 



        map.put(AndyConstants.Params.ID, user_id); 
        map.put(AndyConstants.Params.CREATEDDATE, createdate); 
        map.put(AndyConstants.Params.IMAGE, postImage); 

    JSONObject objectDetails2 = obj.getJSONObject(KEY_DATA); 

        JSONArray jsonArrayUser = objectDetails2.getJSONArray("userdata"); 
        for (int j = 0; j < jsonArrayUser.length(); j++) { 
         HashMap<String, String> mapUser = new HashMap<String, String>(); 
         JSONObject businessObject = jsonArrayUser.getJSONObject(j); 
         Log.d("obj", businessObject.toString()); 
        } 


        Log.d("map", map.toString()); 
        arraylist.add(map); 

       } 

      } 

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

Error Log:

org.json.JSONException: No value for data 


E/array: [] 
E/adapter: [] 

Json:

{ 
    "status": true, 
    "message": "Successfully add Post", 
    "data": [{ 

     "user_id": "46", 
     "image": "", 
     "createdate": "2016-05-11 06:05:12", 
     "userdata": { 
      "first_name": "Alpha", 
      "last_name": "Gamma", 
      "image": "http:\/\/abcd.net\/abcd\/uploads\/100520161005191462941615032.jpg" 
     } 
    } 
+0

Вы использовали некоторые Ключи, значения которых неизвестны как KEY_SUCCESS, KEY_DATA. добавьте эти значения и сформируйте свой код, чтобы было легко читать – Shubhank

+0

Ваш json отсутствует]} в конце файла –

+0

@Dixit Panchal, его не хватает, ошибка в скопировании – Nadia

ответ

1

Вам не нужна эта линия

JSONObject objectDetails2 = obj.getJSONObject(KEY_DATA); 

и изменить

JSONArray jsonArrayUser = objectDetails2.getJSONArray("userdata"); 

к

JSONObject userData = obj.getJSONObject("userdata"); 
    String firstName = userData.getString("first_name"); 
    String lastName = userData.getString("last_name"); 

Как видно из JSON

"data": 
    [{"user_id":"46", 
     "image":"", 
      "createdate":"2016-05-11 06:05:12", 
      "userdata":{"first_name 

данных, имеющей объект [который обозначает массив в то время как USERDATA показывает { который представляет собой JSONObject

+0

JSONObject businessObject = jsonArrayUser.getJSONObject (j); Что я должен сделать с этим – Nadia

+0

сначала я бы предложил перейти на jsonlint.com и вставить свой json. он будет обрабатывать и отображать отступы с разрывом строки. отредактируйте ваш вопрос и вставьте, что так легко объяснить. – Shubhank

+0

Я отредактировал свой вопрос – Nadia

0

Я заметил, что у вашего JSON есть некоторые ошибки. это полный ответ Json?

Поскольку JSON ответ должен быть чем-то вроде этого:

{ 
    "status": true, 
    "message": "Successfully add Post", 
    "data": [{ 

     "user_id": "46", 
     "image": "", 
     "createdate": "2016-05-11 06:05:12", 
     "userdata": { 
      "first_name": "Alpha", 
      "last_name": "Gamma", 
      "image": "http:\/\/abcd.net\/abcd\/uploads\/100520161005191462941615032.jpg" 
     } 
    }] 
} 

Вы заметите, что нет близко [ после userdata в вашем Json.