2016-11-06 3 views
0

Я являюсь получение объекта JSON с веб-сайта, как это:Android JSONException «нет значения для ключа»

JSONObject response = new JSONObject(read(placeConnection));

и когда я исполню response.toString(); я получаю всю строку для этого JSON объекта и ключа и ценность, которую я хочу, там.

Однако, когда я выполняю response.getString("countryName"), я получаю исключение выше, и он говорит, что для этого ключа нет значения.

Вот JSON в виде строки:

{"geonames":[{"countryId":"6252001","countryName":"United States","adminCode1":"NC","fclName":"city, village,...","countryCode":"US","lng":"-76.98661","fcodeName":"populated place","toponymName":"Riverdale","distance":"1.30053","fcl":"P","name":"Riverdale","fcode":"PPL","geonameId":4488145,"lat":"34.99599","adminName1":"North Carolina","population":0}]}

Здесь ошибка:

org.json.JSONException: No value for countryName

+0

Пожалуйста, пост строку JSON для того, чтобы мы могли сказать, есть ли ключ COUNTRYNAME. Если нет ... исключение - это именно то, что есть. –

+0

@ Благородство, пожалуйста, проверьте править – Kingamere

+0

Что произойдет, если вы ответите.getString ("geonames")? –

ответ

3

Ваше поле внутри структуры массива, так что ваш GetString на первом уровне делает не работа.

Вам нужно сделать что-то вроде (непроверенные):

JSONArray geonames = response.getJSONArray("geonames"); 
for(int i = 0 ; i < geonames.length() ; i++){ 
    JSONObject geo = (JSONObject)geonames.get(i); 
    String countryName = geo.getString("countryName"); 

    // Do something with it 
}