2015-01-16 6 views
0

Я пытаюсь создать простую приложение для погоды, и для этого я использую YahooWeather api. Таким образом, я получаю ответ что-то вроде этого:Parse YahooWeather JSON response

/**/yqlCallback({ 
    "query": { 
     "count": 3, 
     "results": { 
      "channel": [{ 
       "item": { 
        "pubDate": "Fri, 16 Jan 2015 11:00 am EET", 
        "condition": { 
         "temp": "1", 
         "text": "Cloudy" 
        }, 
       } 
      }, 
      { 
       "item": { 
        "title": "1", 

       } 
      }, 
      { 
       "item": { 
        "title": "2", 

       } 

      }] 
     } 
    } 
}); 

Единственные Дейты мне нужно отсюда PubDate, температура и текст. Итак, вот как я пытаюсь получить эти ценности.

JSONObject main = json.getJSONObject("query").getJSONObject("result").getJSONArray("channel") 
    .getJSONObject(0); 
    JSONObject details = main.getJSONObject("condition"); 
String t1 = details.getString("text"); 
String t2 = details.getString("temp"); 
String t3 = main.getString("pubDate"); 

Это дает мне эту ошибку: одно или несколько полей, не найденных в данных JSON.

ответ

0

В настоящее время json no JSONObject присутствует с result ключом. Используйте results вместо result, чтобы получить JSONObejct от query JSONObject:

JSONObject main = json.getJSONObject("query"). 
       getJSONObject("results").getJSONArray("channel"); 
JSONObject items = main.getJSONObject("item"); 
JSONObject details = items.getJSONObject("condition"); 
String t1 = details.getString("text"); 
String t2 = details.getString("temp"); 
+0

О, спасибо, моя ошибка, но в любом случае не работает ... – WdarinS

+0

@WdarinS: см. Мой объект редактирования 'условие' находится в' item' jsonObject, поэтому вам сначала нужно получить объект 'item' из main, затем получить 'условие 'от него –

0

Проблема заключалась в том, что мне нужно добавить в конце .getJSONArray("channel").getJSONObject(0).getJsSONObject("item"); в любом случае, спасибо.