2017-01-30 1 views
0

Я попытался добраться до данных прогноза, но не смог, NullPointerException и иногда сбой. потому что я не могу достичь или получить данные из пункта -> forecast -> {data}.Как я могу получить или получить API Yahoo Weather из канала объекта JSON -> элемент -> прогноз -> {день1} {день2} {день3} {день4} {день5}

В Пункт класса:

condition = new Condition(); 
    condition.jsonPopulate("condition"); 

В состоянии Класс:

void jsonPopulate(data){ 
     temp = data.optString("temp"); 
    } 

я получил данные в состоянии успешно класса,

Но почему я не могу сделать то же самое для прогноза, поскольку прогноз и условие - братья и сестры.

Поскольку прогноз имеет объект массива, поэтому я попытался, как показано ниже извлекать данные:

Контекст товара класс отправки объекта прогнозирования кодекса класса Item, как показано ниже.

forecast= new Condition(); 
    forecast.jsonPopulate("forecast"); 

Контекст Прогноз класса, когда retrive данные прогнозного объекта Код прогнозного класса, как показано ниже.

private String day; 
    private String high; 
    private String low; 
    ArrayList<ForecastDetails>fdetails; 

    public void jsonPopulate(data){ 
    for(i=0; i<data.length(); i++){ 
      day = data.optString("day"); 
      high = data.optString("high"); 
      low = data.optString("low"); 

      fdetails.add(day); 
      fdetails.add(high); 
      fdetails.add(low); 
     } 

    } 

и попытаться сохранить в ArrayList<ForecastDetails>; , но не удалось, у кого есть может предложить мне о том, как извлекать данные прогноза из пункта объекта Yahoo погоды.

ответ

0
JSONObject d = new JSONObject(data); 
    for(i=0; i<d.length(); i++) 
    { 
     day = d.getString("day"); 
      high = d.getString("high"); 
      low = d.getString("low"); 

      fdetails.add(day); 
      fdetails.add(high); 
      fdetails.add(low); 
    } 
+0

Вы имеете в виду, что вместо optString («день») следует использовать getString («день»); – shaheb

+1

вы можете использовать optString также без проблем .. !!! Разница заключается в том, что optString возвращает пустую строку (""), если указанный вами ключ не существует, а getString с другой стороны бросает исключение JSON, если ключ отсутствует в JSON – AnilCk

+0

, который вы сказали JSONObject d = новый JSONObject (data) ; Мне это понравилось JSONObject data = new JSONObject (s); JSONObject queryResult = data.optJSONObject ("query"); query-> channel-> item-> forecast -> {}, {}, {}, {}, {}; i доступ до прогноза, но не его данные внутри курчавого прогноза, который я пробовал, как выше, вы упоминаете, но не получаете данные. – shaheb

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