2015-02-11 6 views
0

У меня следующий результат JSON:
Это результат погодных условий.
Моя цель - сначала получить названия городов.
затем по городу в списке, запросить свойство
Получить объект JSON из вложенного результата JSON

{ 
    "response": { 
    "version":"0.1", 
    "termsofService":"http://www.wunderground.com/weather/api/d/terms.html", 
    "features": { 
    "hourly": 1 
    , 
    "lang": 1 
    } 
     , "results": [ 
     { 
     "name": "Al-Arz", 
     "city": "Al-Arz", 
     "state": "", 
     "country": "LB", 
     "country_iso3166":"LB", 
     "country_name":"Lebanon", 
     "zmw": "00000.1.40105", 
     "l": "https://stackoverflow.com/q/zmw:00000.1.40105" 
     } 
     , 
     { 
     "name": "Beirut", 
     "city": "Beirut", 
     "state": "", 
     "country": "LB", 
     "country_iso3166":"LB", 
     "country_name":"Lebanon", 
     "zmw": "00000.1.40100", 
     "l": "https://stackoverflow.com/q/zmw:00000.1.40100" 
     } 
     , 
     { 
     "name": "Dahr Baidar", 
     "city": "Dahr Baidar", 
     "state": "", 
     "country": "LB", 
     "country_iso3166":"LB", 
     "country_name":"Lebanon", 
     "zmw": "00000.1.40110", 
     "l": "https://stackoverflow.com/q/zmw:00000.1.40110" 
     } 
     , 
     { 
     "name": "Houche-Al-Oumara", 
     "city": "Houche-Al-Oumara", 
     "state": "", 
     "country": "LB", 
     "country_iso3166":"LB", 
     "country_name":"Lebanon", 
     "zmw": "00000.1.40101", 
     "l": "https://stackoverflow.com/q/zmw:00000.1.40101" 
     } 
     , 
     { 
     "name": "Merdjayoun", 
     "city": "Merdjayoun", 
     "state": "", 
     "country": "LB", 
     "country_iso3166":"LB", 
     "country_name":"Lebanon", 
     "zmw": "00000.1.40104", 
     "l": "https://stackoverflow.com/q/zmw:00000.1.40104" 
     } 
     , 
     { 
     "name": "Rayack", 
     "city": "Rayack", 
     "state": "", 
     "country": "LB", 
     "country_iso3166":"LB", 
     "country_name":"Lebanon", 
     "zmw": "00000.1.40102", 
     "l": "https://stackoverflow.com/q/zmw:00000.1.40102" 
     } 
     , 
     { 
     "name": "Tripoli", 
     "city": "Tripoli", 
     "state": "", 
     "country": "LB", 
     "country_iso3166":"LB", 
     "country_name":"Lebanon", 
     "zmw": "00000.1.40103", 
     "l": "https://stackoverflow.com/q/zmw:00000.1.40103" 
     } 
     ] 
    } 
} 

Как я могу получить имена всех городов?
Спасибо заранее.

ответ

0
JSONObject rootObject = (JSONObject)new JSONTokener(yourJsonString).nextValue(); 
JSONObject responseObject = rootObject.getJSONObject("response"); 
JSONArray cityArray = responseObject.getJSONArray("results"); 
List<String> listWithCityNames = new ArrayList<String>(); 

for(int i = 0; i< cityArray.lenght();i++){ 
    listWithCityNames.add(cityArray.getJSONObject(i).getString("name")); 

} 

for(String city:listWithCityNames){ 
    System.out.println(city); 
} 

Этот фрагмент кода анализирует строку JSON в вар yourJsonString и собирает атрибут name в results массиве внутри response объекта вашего JSON. Добавьте Try/Catch блоков, если необходимо.

+0

Большое вам спасибо! – EFK10003

+0

Рад помочь;) – vinitius

0

Вы можете рассматривать его как объект json. Выполните следующие шаги:

  1. получить это в объект json.

  2. затем возьмите значение «результатов» в один массив, используя метод getString().

  3. затем отбросить этот результат в массив json.
  4. затем перебирать по json-массиву по одному объявлению, используя метод getString, вы можете получить значения всех городов.
Смежные вопросы