2016-05-03 13 views
0

平均気象情報(温度、湿度、露点、圧力)をhttp://ghelfer.net/weather.aspx?output=jsonから計算する必要があります。 JSONArrayを使用してそれを受信し、画面上の各平均を計算して表示します。私は、分離された情報(温度、湿度、湿度、露点、湿度などの配列)を配列にどのように埋め込むのか分かりません。 どうすればよいですか?Android - webserviceで受信した平均情報を計算する

完全にそうでない作品に編集------(これは私が試したものです)

JSONObject res = new JSONObject(result); 
JSONArray array1 = res.getJSONArray("temperature"); 
for (int i = 0; i<array1.length();i++){ 
    float add = 0; 
    add += Integer.parseInt(array1[i], array1.length()); 
} 

EDIT2 --------

public void onClickWheater(View view){ 
     new HttpAsyncTask().execute(opa); 
    } 

    class HttpAsyncTask extends AsyncTask<String, Void, String> { 

     ProgressDialog dialog; 


     @Override 
     protected String doInBackground(String... params) { 
      if(params.equals(opa)){ 
       try { 
       HttpGet get = new HttpGet("http://ghelfer.net/weather.aspx?output=json"); 
       HttpClient client = new DefaultHttpClient(); 
       HttpResponse response = client.execute(get); 
       int status = response.getStatusLine().getStatusCode(); 


        HttpEntity entity = response.getEntity(); 
        String data = EntityUtils.toString(entity); 
        return data; 

      } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } else { 

       try { 
        HttpGet get = new HttpGet("https://viacep.com.br/ws/" + params[0] + "/json/"); 
        HttpClient httpclient = new DefaultHttpClient(); 
        HttpResponse response = httpclient.execute(get); 

        int status = response.getStatusLine().getStatusCode(); 

        if (status == 200) { 
         HttpEntity entity = response.getEntity(); 
         String data = EntityUtils.toString(entity); 
         return data; 
        } 


       } catch (Exception e) { 
        return null; 
       } 

      } 
      return null; 
     } 

コード。モデルが作成されたらGsonを使用してモデルクラスに

+0

あなたが試したどのようなコード表示する[編集]あなたの質問を喜ばせることはできますか? –

+0

@ cricket_007申し訳ありません!編集された:) –

+0

'getJSONArray(" weather ")' ...温度は配列の名前ではありません –

答えて

0

を次のように別々のArrayListを作成し、あなただけ蓄積することができあなたが必要とするデータ。しかし、まず、正しく解析する必要があります。

  • res.getJSONArray("temperature");が正しくありません。 JSONデータを見ると、"weather"が配列の名前になります。 JSONArray
  • float add = 0が配列
  • Integer.parseInt(String s, int radix)内のすべてのオブジェクトのためのあなたのカウンターをリセットする刃先交換式ではありませんあなたは
  • ここ

を与えたパラメータに適用されないため

  • array1[i]がされてコンパイルされません何をすべき代わりに行う。

    double avgTemp = 0.0; 
    double avgHumid = 0.0; 
    
    double tempSum = 0.0; 
    double humidSum = 0.0; 
    
    JSONObject json = new JSONObject(response); 
    JSONArray weather = json.getJSONArray("weather"); 
    int dataLength = weather.length(); 
    
    for (int i = 0; i < dataLength; i++) { 
        JSONObject tempObj = weather.getJSONObject(i); 
    
        tempSum += tempObj.getDouble("temperature"); 
        humidSum += tempObj.getDouble("humidity"); 
    
    } 
    
    if (dataLength != 0) { 
        avgTemp = tempSum/dataLength; 
        avgHumid = humidSum/dataLength; 
    } 
    
  • +0

    あなたの答えをありがとう、明らかにそれは働いた。しかし何らかの理由で、私はWebサービスからの情報を受け取っていません。私の「結果」はnullになります。 –

    +0

    ウェブページからの読み方について、より多くのコードを表示する必要があります。私はVolleyを使い、このコードはうまくいった。 –

    +0

    メインのトピックをフルコードで編集します –

    0

    解析のJSONあなたは平均値を計算しようとしている場合は、別々のリストを保存する必要はありません

     WheatherModel model = new WheatherModel(); 
         model=(WheatherModel)response; //after parsing json to model class 
    
         for i=0; i<model.size();i++) 
         { 
          ArrayList<String> humidity = new ArrayList<>(); 
          humidity.add(model.getHumidity()); 
    
         } 
    
    +0

    あなたはGsonが使用されていると仮定すべきではありません。 –