2017-01-30 6 views
0

私は予測データに到達しようとしましたが、 NullPointerException、場合によってはクラッシュします。私はアイテム-> forecast -> {data}からデータに到達したり検索したりしないためです。Yahoo Weather APIをJSONオブジェクトチャンネルから取得または取得する方法 - > item - > forecast - > {day1} {day2} {day3} {day4} {day5}

は、Itemクラスで:条件クラスで

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

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

私は、成功した条件クラスでデータを得た

しかし、なぜ私は予測するので、予測のための同じを傾けると、条件は兄弟です。

Iは以下のようにしようとしたので、予測は、配列オブジェクトを有しているので、データを取得する:以下のような項目クラスの予測 コードのオブジェクトを送信

コンテキスト項目クラス。

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>; に維持しようとしたが失敗し、誰もがヤフー天気の項目オブジェクトから予測データを取得する方法について私を提案することができました。

答えて

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( "day")の代わりにgetString( "day")を使用する必要があります。 – shaheb

+1

あなたもoptStringを使用できます問題なし.. !!!違いは、指定されたキーが存在しない場合、optStringが空の文字列( "")を返す一方、getStringがJSONExceptionをスローする場合、キーがJSONに存在しない場合 – AnilCk

+0

JSONObject d = new JSONObject(data) ; 私はこれが好きでした JSONObject data =新しいJSONObject(s); JSONObject queryResult = data.optJSONObject( "query"); query-> channel-> item-> forecast-> {}、{}、{}、{}、{}; 私は予報までアクセスしていますが、予測の中にはデータがありません。上記のようにしてみましたが、データは取得できませんでした。 – shaheb

関連する問題