2017-01-05 4 views
1

私はURLからjsonコードを解析しようとしていますが、何の結果も得られないので私の間違いを見ることはできません。これは私のコードです:間違い読書json

protected Void doInBackground(Void... arg0) { 
      // Creating service handler class instance 
      ServiceHandler sh = new ServiceHandler(); 

      // Making a request to url and getting response 
      jsonStr = sh.makeServiceCall("http://api.apixu.com/v1/forecast.json?key=93a1531ba64540f7a41180856163011&q=bilbao&days=1", ServiceHandler.GET); 


      Log.d("Response: ", "> " + jsonStr); 

      if (jsonStr != null) { 
       try { 
        JSONObject jsonObj = new JSONObject(jsonStr); 

        JSONObject fore = jsonObj.getJSONObject("forecast"); 

        // Getting JSON Array node 
        eventos = fore.getJSONArray("forecastday"); 

        porhoraca = fore.getJSONArray("hour"); 


        for (int i = 0; i < porhoraca.length(); i++) { 
         JSONObject c = porhoraca.getJSONObject(i); 

         String hora = c.getString(TAG_TIME); 
         String tempec = c.getString(TAG_TEMP_C); 
         String sensacion = c.getString(TAG_FEELSLIKE_C); 

         JSONObject condi = c.getJSONObject(TAG_CONDITION); 
          String texto = condi.getString(TAG_TEXT); 
          String icono = condi.getString(TAG_ICON); 



         // tmp hashmap for single contact 
         HashMap<String, String> contact = new HashMap<String, String>(); 

         // adding each child node to HashMap key => value 
         contact.put("nombre", hora); 
         contact.put("hora", tempec); 
         contact.put("nombre_lugar", sensacion); 
         contact.put("coordenadas", texto); 
         contact.put("info", icono); 



         // adding contact to contact list 
         eventosList.add(contact); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 

      return null; 


     } 

私はこのオブジェクトをjsonのあるURLから取得したいと思います。私は間違っています。おそらく、私はjsonオブジェクトとJson配列を正しく読み込んでいません。誰かが私の間違いはどこですか?おかげ

はJSONコードはここにある:

http://api.apixu.com/v1/forecast.json?key=93a1531ba64540f7a41180856163011&q=bilbao&days=1

+0

'gson'ライブラリの使用を検討してください...それはあなたの人生をはるかに簡単にします! –

+0

@Androi:Log.dにどのようなデータが入っていますか( "Response"、 "+" jsonStr); 'line? –

+0

ロケーション、予測、現在の情報から取得したいものは? – Shane

答えて

1

は、最後に私はそれをあなたのコード、デバッグを実施し、ここでそのeventosListで最終的な結果を得た:

[{nombre_lugar=2.0, coordenadas=Clear, hora=2.7, nombre=2017-01-05 00:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=1.8, coordenadas=Clear, hora=2.5, nombre=2017-01-05 01:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=1.6, coordenadas=Clear, hora=2.4, nombre=2017-01-05 02:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=1.4, coordenadas=Clear, hora=2.2, nombre=2017-01-05 03:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=1.0, coordenadas=Clear, hora=2.0, nombre=2017-01-05 04:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=0.7, coordenadas=Clear, hora=1.7, nombre=2017-01-05 05:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=0.3, coordenadas=Clear, hora=1.5, nombre=2017-01-05 06:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=1.0, coordenadas=Clear, hora=2.4, nombre=2017-01-05 07:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=1.8, coordenadas=Clear, hora=3.4, nombre=2017-01-05 08:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=2.5, coordenadas=Sunny, hora=4.3, nombre=2017-01-05 09:00, info=//cdn.apixu.com/weather/64x64/day/113.png}, {nombre_lugar=3.9, coordenadas=Sunny, hora=5.7, nombre=2017-01-05 10:00, info=//cdn.apixu.com/weather/64x64/day/113.png}, {nombre_lugar=5.4, coordenadas=Sunny, hora=7.1, nombre=2017-01-05 11:00, info=//cdn.apixu.com/weather/64x64/day/113.png}, {nombre_lugar=6.8, coordenadas=Sunny, hora=8.5, nombre=2017-01-05 12:00, info=//cdn.apixu.com/weather/64x64/day/113.png}, {nombre_lugar=7.6, coordenadas=Sunny, hora=9.1, nombre=2017-01-05 13:00, info=//cdn.apixu.com/weather/64x64/day/113.png}, {nombre_lugar=8.3, coordenadas=Sunny, hora=9.7, nombre=2017-01-05 14:00, info=//cdn.apixu.com/weather/64x64/day/113.png}, {nombre_lugar=9.1, coordenadas=Sunny, hora=10.3, nombre=2017-01-05 15:00, info=//cdn.apixu.com/weather/64x64/day/113.png}, {nombre_lugar=8.5, coordenadas=Sunny, hora=9.3, nombre=2017-01-05 16:00, info=//cdn.apixu.com/weather/64x64/day/113.png}, {nombre_lugar=7.9, coordenadas=Sunny, hora=8.3, nombre=2017-01-05 17:00, info=//cdn.apixu.com/weather/64x64/day/113.png}, {nombre_lugar=7.3, coordenadas=Clear, hora=7.3, nombre=2017-01-05 18:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=6.3, coordenadas=Clear, hora=6.3, nombre=2017-01-05 19:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=5.3, coordenadas=Clear, hora=5.3, nombre=2017-01-05 20:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=4.3, coordenadas=Clear, hora=4.3, nombre=2017-01-05 21:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=1.5, coordenadas=Clear, hora=2.5, nombre=2017-01-05 22:00, info=//cdn.apixu.com/weather/64x64/night/113.png}, {nombre_lugar=-1.3, coordenadas=Clear, hora=0.6, nombre=2017-01-05 23:00, info=//cdn.apixu.com/weather/64x64/night/113.png}] 

soultionがあるこの本を試してみて、あなたは完全な結果を取得します:ここにある

try { 
         JSONObject jsonObj = new JSONObject(response); 

         JSONObject fore = jsonObj.getJSONObject("forecast"); 

         // Getting JSON Array node 
         JSONArray eventos = fore.getJSONArray("forecastday"); 


         JSONArray porhoraca = eventos.getJSONObject(0).getJSONArray("hour"); 

         for (int i = 0; i < porhoraca.length(); i++) { 

          JSONObject c = porhoraca.getJSONObject(i); 

          String hora = c.getString("time"); 
          String tempec = c.getString("temp_c"); 
          String sensacion = c.getString("feelslike_c"); 
          JSONObject condi = c.getJSONObject("condition"); 
          String texto = condi.getString("text"); 
          String icono = condi.getString("icon"); 


          // tmp hashmap for single contact 
          HashMap<String, String> contact = new HashMap<String, String>(); 

          // adding each child node to HashMap key => value 
          contact.put("nombre", hora); 
          contact.put("hora", tempec); 
          contact.put("nombre_lugar", sensacion); 
          contact.put("coordenadas", texto); 
          contact.put("info", icono); 


          // adding contact to contact list 
          eventosList.add(contact); 
         } 
         Log.d("testttttttt", eventosList.toString()); 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
+0

ありがとうございました – Androi

2

私はあなたの問題はあなたが現在それを扱うようhourforecastdayではなくforecastに配列されていることだと思います。

私はそれが助けてくれることを願っています!

+0

恐らくそれは、別の配列の中でどうやって争うことができますか?ありがとう – Androi

+0

'porhoraca = eventos.getJSONArray(" hour ");' – Dr0xiii

-1

をあなたの問題の完全な解決策は、JsonObjectで応答を渡すだけで、コードは以下の通りです

ご迷惑をおかけして申し訳ございませんが、ご迷惑をおかけして申し訳ございません。

+0

なぜ否定的な回答ですか? – Shane

関連する問題