2015-02-25 2 views
0

Я использую приведенный ниже код, чтобы принять значения цены. Я могу получить стоимость по цене. Однако, когда дело доходит до коры, оно исходит из исключения.Доступ к массиву внутри массива в ответе json

@Override 
    public void onTaskCompleted(JSONArray responseJson) { 

     try { 
      List<String> crust = new ArrayList<String>(); 
      List<String> price = new ArrayList<String>(); 

      for (int i = 0; i < responseJson.length(); ++i) { 
       JSONObject object = responseJson.getJSONObject(i); 

       if ((object.getString("MainCategoryID")).equals("1") 
         && (object.getString("SubCategoryID")).equals("1")) { 
        Log.i("Price ", object.getString("Price")); 
        price.add(object.getString("Price")); 
        Log.i("Crust ", object.getString("Crust")); 
        crust.add(object.getString("Crust")); 

       } 

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

это ответ JSON

{ 
     "Category":"1PI", 
     "Price":0.0000, 
     "SubCategoryID":1, 
     "SubMenu":true, 
     "SubMenuEntity":[ 
     { 
      "Crust":"Sausage", 

корка позиционируется в массиве, внутри массива, как я может получить доступ к корке в моем выше кодировании.

любая помощь будет оценена по достоинству.

+0

** «Корочка расположена в массиве, внутри массива» **: Нет, Корка находится в объекте JSON в массиве JSON, который находится в объекте JSON. Все, что вам нужно сделать, это получить значение 'SubMenuEntity' (массив JSON) и получить объекты (ы) JSON, которые он содержит, а затем получить значение пары/пары Crust. – Squonk

+0

Получите jsonArray из вашего объекта и получите Crust из этого массива. Я бы рекомендовал вам использовать GSON для разбора ответов json, также лучше использовать библиотеку JSON в вашем проекте, например, как для повышения производительности, так и для управления. –

ответ

1

SubMenuEntity item имеет массив объектов. Вам нужно получить массив и цикл, хотя он. Для каждого объекта получите значение Crust.

try { 
     List<String> crust = new ArrayList<String>(); 
     List<String> price = new ArrayList<String>(); 

     JSONArray responseJson = null; 

     for (int i = 0; i < responseJson.length(); ++i) { 
     JSONObject object = responseJson.getJSONObject(i); 

     if ((object.getString("MainCategoryID")).equals("1") 
      && (object.getString("SubCategoryID")).equals("1")) { 
      Log.i("Price ", object.getString("Price")); 
      price.add(object.getString("Price")); 

      JSONArray subMenuArray = object.getJSONArray("SubMenuEntity"); 
      for (int j = 0; j < subMenuArray.length(); ++j) { 
      JSONObject subMenuObject = subMenuArray.getJSONObject(j); 
      Log.i("Crust ", subMenuObject.getString("Crust")); 
      crust.add(subMenuObject.getString("Crust")); 
      } 

     } 

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

ваш Crust находится внутри SubMenuEntity, вам следует получить это с помощью object.getJSONArray("SubMenuEntity"), а затем получить Crust от первого Object в этом массиве

Смежные вопросы