2013-10-15 5 views
6

Пожалуйста, помогите мне .. Я работаю над проектом, и я получаю данные из веб-сервисов в формате JSON. Я пытаюсь разобрать его, но я не могу этого сделать. У меня есть эта JSON-DATA-Как разобрать JSON Array внутри другого JSON Array в Android

{ 
     "response": { 
      "status": { 
       "code": "1", 
       "message": "sucess", 
       "user_id": "1" 
      }, 
      "foods": [ 
       { 
        "char": "A", 
        "content": [ 
         { 
          "food_name": "add Malt" 
         }, 
         { 
          "food_name": "a la mode" 
         }, 
         { 
          "food_name": "Almonds" 
         } 
       ] 
      }, 
      { 
       "char": "Z", 
       "content": [ 
        { 
         "food_name": "Zebra Cakes" 
        }, 
         { 
          "food_name": "Zucchini, Baby" 
         }, 
         { 
          "food_name": "zxc" 
         } 
        ] 
       } 
      ] 
     } 
    } 

Отсюда я нахожусь в состоянии успешно получить «еду» массив, но я получаю застрял, когда я пытаюсь получить данные «содержание» массив и food_name.

Я использую этот код, но я не получил никакого решения, проверьте этот снип-код.

protected String doInBackground(String... args) { 
       // Building Parameters 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
       nameValuePairs.add(new BasicNameValuePair("method","eat_tracking_details")); 
       nameValuePairs.add(new BasicNameValuePair("uid",userid)); 
       // getting JSON string from URL 
       JSONObject json = jsonParser.makeHttpRequest(JSONParser.urlname,"GET", nameValuePairs); 
       //System.out.println("****json*"+json); 
       if (json != null) { 
        try { 
         JSONObject response = json.getJSONObject("response"); 
         JSONObject status = response.getJSONObject("status"); 
         code = status.getString("code"); 
         JSONArray FoodArray = response.getJSONArray("foods"); 
         for (int i = 0; i < FoodArray.length(); i++) { 
          String character = FoodArray.getJSONObject(i).getString("char"); 
          System.out.println("*****character****************"+character); 
          JSONArray FoodNameArray = new JSONArray(FoodArray.getJSONObject(i).getString("content")); 
          System.out.println("====================///////////"+FoodNameArray); 

          for (int j = 0; j <FoodNameArray.length(); j++) { 
           String Foodname = FoodArray.getJSONObject(j).getString("food_name"); 
           System.out.println("@@@@@@@@@@@@@"+Foodname); 
          } 
         } 

        } catch (JSONException e) { 
         // TODO: handle exception 
        } 
       } 

Проверить этот URL для веб-службы response- WEB-SERVICE URL

+0

Вы не должны создавать новый экземпляр JSONArray, просто получить его, как вы делали для массива еды с getJSONArray(). – fasteque

+0

массив не в правильном формате и посмотреть http://www.androidhive.info/2012/01/android-json-parsing-tutorial/ – Rohit

+0

использование gson, экономит время –

ответ

3

Вы должны заменить вашу соответствующей части кода с этим кодом:

for (int j = 0; j < FoodNameArray.length(); j++) { 
    String Foodname = FoodNameArray.getJSONObject(j).getString("food_name"); 
    System.out.println("@@@@@@@@@@@@@" + Foodname); 
} 
+0

Я протестировал его. Он работает на моей стороне. – Arshu

+0

Да, дорогой ты прав, его работа ... очень глупая ошибка :) Спасибо! –

+0

Тогда plz принимает его как правильный ответ, чтобы другие пользователи могли также извлечь из этого выгоду – Arshu

2

Я считаю, что лучшим подходом будет использовать библиотеки GSON (http://code.google.com/p/google-gson/). В этом случае вам просто нужно сделать свои классы моделей и не беспокоиться о логике синтаксического анализа.

+0

Дорогой вы можете проверить этот URL? и разобрать с помощью библиотеки gson. Все в порядке, только я делаю любую глупую ошибку. –

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