2015-02-22 8 views
0

Я пытаюсь получить JSONObject от JSONArray. Когда я делаю Log.i, выводятся значения JSONArray и имеет JSONObject, который я хочу. Проблема в том, что когда я пытаюсь получить этот JSONObject, выдает шоу исключения: No value for Local or No value for TipoLocal. Локальные и TipoLocal - это JSONObject в JSONArray.Получение JSONObject от JSONArray?

Как я мог это сделать?

JSON

{"Retorno":[ 
{"Local":{"id":"1","nome":"Vovo Landa","telefone":"3333333","celular":"44444","endereco":"Rua 46 a","numero":"025","bairro":"bairro","email":"email"}}, 
{"TipoLocal":{"id":"1","tipo":"Pizzaria"}} 
]} 

JSONObject

try{ 
    Gson gson = new Gson(); 
    JSONArray retorno = obj.getJSONArray("Retorno"); 

    if(retorno.length() > 0){ 
     for(int x = 0; x < retorno.length(); x++){ 
       JSONObject jsoObject = retorno.getJSONObject(x); 
       JSONObject jsoLocal = jsoObject.getJSONObject("Local"); 
       JSONObject jsoTipoLocal = jsoObject.getJSONObject("TipoLocal"); 
     } 
    } 
}catch (JSONException e) { 
     Log.e("JSONException->:", "getLocais in LocalDAO: " + e.getLocalizedMessage()); 
} 

ответ

1

Изменить этот раздел:

for(int x = 0; x < retorno.length(); x++){ 
    JSONObject jsoObject = retorno.getJSONObject(x); 
    JSONObject jsoLocal = jsoObject.getJSONObject("Local"); 
    JSONObject jsoTipoLocal =jsoObject.getJSONObject("TipoLocal"); 
} 

Для

for(int x = 0; x < retorno.length(); x++){ 
    JSONObject jsoObject = retorno.getJSONObject(x); 

    if(jsoObject.has("Local")) {  
     JSONObject jsoLocal = jsoObject.getJSONObject("Local"); 
    } 
    if(jsoObject.has("TipoLocal")) { 
     JSONObject jsoTipoLocal = jsoObject.getJSONObject("TipoLocal"); 
    } 
} 
+1

В первом JSONObject у вас есть JUST "Local", а во втором - JUST "Tip oLocal ", но в цикле вы получаете оба объекта одновременно –

0

Их могли меня следующие причины, когда не найдена ошибка значения не произойдет

1) Проверьте сетевое подключение работает правильно, если вам подключаются через Интернет.

2) Объявить разрешение в Интернете в файле AndroidManifest.xml.

3) Убедитесь, что вы получаете правильный элемент, например, если вы вызываете result.getJsonObject(), затем убедитесь, что вы пытаетесь получить JsonObject, а не JsonArray.

4) Если вы получаете Нет значения найти в Android, то проверьте, что вы правильно написали слово со стороны android и сервера например, если вы объявили «Город» на сервере, тогда убедитесь, что в Android, иначе он должен быть «городом» не «городом».

5) Если вы добавляете JsonObject на JsonArray, проверьте, что JsonObject добавлен в JsonArray на стороне сервера.

6) Проверьте фактическое исключение в LogCat, который расскажет вам реальную вещь, почему вы не получаете значения

Надеются, что это поможет вам

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