2015-04-07 3 views
0

У меня есть проблема синтаксического анализа данных, в моем LogCat я нашел эту ошибку:Ошибка андроида JSON синтаксический анализ данных

Error parsing dataorg.json.JSONException: No value for nome 

Это мой парсер код:

try { 
      JSONArray jArray = new JSONArray(result); 
      for (int i = 0; i < jArray.length(); i++) { 
       JSONObject json_data = jArray.getJSONObject(i); 
       String aa = json_data.getString("nome"); 
       Log.i("log_tag", "JSON:" + aa); 
      } 
     } 
     catch (JSONException e) 
      { 
      Log.e("log_tag_parsing", "Error parsing data" + e.toString()); 
      } 

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

[ 
    { 
     "punti": { 
      "_id": { 
       "$id": "551fb585ecba12c819000032" 
      }, 
      "nome": "Google", 
      "loc": [ 
       -122.083983, 
       37.422969 
      ], 
      "icona": 1, 
      "istituzione_id": { 
       "$id": "551fb556ecba12c819000031" 
      } 
     } 
    } 
] 

Кто-то может мне помочь? я пытался разными способами, но я не могу найти решение. Thanks

ответ

1

Вы должны извлечь "nome" из "punti" объекта: json_data.getJSONObject("punti")

try { 
    JSONArray jArray = new JSONArray(result); 
    for (int i = 0; i < jArray.length(); i++) { 
     JSONObject json_data = jArray.getJSONObject(i); 
     JSONObject punti = json_data.getJSONObject("punti"); 
     String aa = punti.getString("nome"); 
     Log.i("log_tag", "JSON:" + aa); 
    } 
} catch (JSONException e) { 
    Log.e("log_tag_parsing", "Error parsing data" + e.toString()); 
} 
+1

благодаря этой работе;) – Motosega

0

Ваше поле «nome» находится внутри JSONObject «punti». Ваш код должен быть:

JSONArray jArray = new JSONArray(result); 
      for (int i = 0; i < jArray.length(); i++) { 
       JSONObject json_data = jArray.getJSONObject(i); 
       JSONObject json_punti = json_data.getJSONObject("punti"); 
       String aa = json_punti .getString("nome"); 
       Log.i("log_tag", "JSON:" + aa); 
      }