2017-05-24 4 views
1

私のコードである:私はAsyncTaskを外に出したいです。タスクデータ

public String search ="hello"; 

public void WeatherSearch() { 
    new GeneralAPI(new OnCompletionListener() { 
     @Override 
     public void onComplete(String result) { 
      try { 
       JSONObject jObj = new JSONObject(result); 
       JSONObject cord = null; 

       cord = jObj.getJSONObject("coord"); 
       JSONObject main = jObj.getJSONObject("main"); 

       main.getString("temp"); 

       JSONArray weathers = jObj.getJSONArray("weather"); 
       JSONObject weather = weathers.getJSONObject(0); 

       String icon = weather.getString("icon"); 

       search = weather.getString("description"); 
       System.out.println(search); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }).execute("http://api.openweathermap.org/data/2.5/weather?lat=37.276101&lon=127.130824&APPID=52411ebbc405b9763828164dda220d19"); 
    System.out.println(" ㅇㅇ " +search); 
} 

のみ検索では、印刷の検索 - 印刷検索+>晴天等... しかしㅇㅇ - >こんにちは...

しかし、私はしたいです澄んだ空のデータを得る。

私はexecute().get()にしようとしていますが、結果は同じです。あなたのJSONで

答えて

0

ルック:天気は何のプロパティdescriptiionを持っていない

"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}] 

、リスト内のオブジェクトは、それを持っているので、あなたがweather JSONオブジェクトのモミの要素を取り、その後、.getString("description")をしなければなりません。それは 存在しJSONObjectである、またはそうでなければスロー

​​

getJSONObject(String name)名前によってマッピングされた値を返します。履歴書には

Documentation here

、あなたはあなたが何をすべきdescription

履歴書

リストの最初の値をとり、その後、atributeを取得する必要があります:

JSONObject weather = weathers.getJSONObject(FIRST_ELEMENT); 

としない:

JSONObject weather = weathers.getJSONObject(0); 
+0

です。私は何をすべきか ...?。? しかし、このコードは私の大学のクラスで研究されています。 ちょうど私はデータに行きたいです... –

+0

正しいことを行うことができるように答えを更新しました。json.getJSONObject(FIRST_ELEMENT)。それが有用だった場合anwerを受け入れることを忘れないでください:) –

関連する問題