2014-09-12 3 views
0

У меня есть это здесь: JSONмногомерный массив из JSON андроида

[ 
     { 
      "ID": "2", 
      "Item Description": "Data removed for protection", 
      "Link": "Data removed for protection", 
      "Image": "Data removed for protection", 
      "Valid From": "Data removed for protection", 
      "Valid To": "Data removed for protection" 
     }, 
     { 
      "ID": "3", 
      "Item Description": "Data removed for protection", 
      "Link": "Data removed for protection", 
      "Image": "Data removed for protection", 
      "Valid From": "Data removed for protection", 
      "Valid To": "Data removed for protection" 
     }, 
{ 
      "ID": "4", 
      "Item Description": "Data removed for protection", 
      "Link": "Data removed for protection", 
      "Image": "Data removed for protection", 
      "Valid From": "Data removed for protection", 
      "Valid To": "Data removed for protection" 
     } 
    ] 

Я загрузить это к JSONObject называется jArray. Я тогда превратить это в JSONArray так:

JSONArray json_array = new JSONArray(jArray); 

Однако, когда я пытаюсь получить доступ к нему так: json_array[0][0] интегрированная среда выдает ошибку на ней и говорит: Array type expected; found: 'org.json.JSONArray'.

Теперь, не поймите меня неправильно, но не должно JSONArray вести себя таким же образом, чтобы получить доступ к многомерному аспекту?

+0

как может у прийти к выводу, что «JSONArray» дает Мульти array Array as array [] []? –

ответ

3

JSONArray и нормальные ява массивы не являются одинаковыми. JSONArray - это другой объект java. Ответ @ Kon дает базовую идею JSONArray.

Если вы хотите получить доступ к данным из вашего JSONArray, вы можете перебрать его, чтобы получить каждый JSONObject, а затем извлекать данные там что-то вроде

JSONArray json_array = new JSONArray(jArray); 

    for (int i = 0; i < json_array.length() ; i++) { 
       try{ 
        JSONObject object1 = jsonArray.getJSONObject(i); 
        int id = object1.getInt("ID"); 
        String itemDescription = object1.getString("Item Description");  
        String link = object1.getString("Link"); 
        .....//and so on   
       } 
       catch(Exception e){ 
        e.printStackTrace(); 
        } 
       } 
0

Нет, он не должен вести себя так же, как многомерный массив.

Это потому, что json_array не является массивом, это другой объект Java. Доступны только массивы с указанным выше синтаксисом. Вам нужно будет изучить документацию для этого класса, чтобы узнать, как получить доступ к необходимой вам информации. Он должен предоставить четкие и хорошо документированные методы получения того, что вам нужно.

Вы не хотите, чтобы этот синтаксис позволял вам получить доступ к массиву, который поддерживает ваш класс в любом случае. Это будет нарушением инкапсуляции и плохой дизайн в целом.

Хорошая отправная точка здесь http://www.json.org/javadoc/org/json/JSONArray.html