2017-05-24 41 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()但結果是一樣的。

回答

0

看看你的JSON:

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

天氣沒有財產descriptiion,列表內的對象了吧,所以,你必須採取weather JSON對象的冷杉元素,然後做.getString("description")

​​

getJSONObject(字符串名稱)如果存在 它是一個JSONObject,或以其它方式引發返回通過名稱映射的值。

Documentation here

在簡歷,你必須採取列表的第一個值,然後拿到屬性附加傷害description

簡歷

你應該這樣做:

JSONObject weather = weathers.getJSONObject(FIRST_ELEMENT); 

與不做:

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

左右。我該怎麼辦 ...?。? 但這個代碼是在我的大學課上學習的。 只是我想要的數據... –

+0

我更新了答案,以便您可以做正確的事情json.getJSONObject(FIRST_ELEMENT)。不要忘記,如果它有用的話,請接受它! –

相關問題