2011-12-23 12 views
0

私はPHPから受け取ったJSONArrayを解析しようとしています。私は戻ってきた値が[["84.0918544152744"]、["84.0918544152744"]であることをログ・ネコから見ますが、配列から要素を解析すると、NullPointerExceptionが発生します。ここに私のコードは次のとおりです。ここでJavaからJSONArrayを取得する(Android)

private class SetAverages extends AsyncTask<Void, Void, BufferedReader> { 
     @Override 
     protected BufferedReader doInBackground(Void... params) { 
      String url = "..."; 

      Log.i(LOG_TAG, "URL = " + url); 
      URL iuri; 
      try { 
       iuri = new URL(url); 
       URLConnection connection = iuri.openConnection(); 
       connection.setDoInput(true); 
       connection.setDoOutput(true); 
       connection.setUseCaches(false); 
       connection.setRequestProperty("Content-type", 
         "application/x-www-form-urlencoded"); 
       BufferedReader br = new BufferedReader(new InputStreamReader(
         (InputStream) connection.getContent())); 
       Log.i(LOG_TAG, "br value is " + br.readLine()); 
       return br; 
      } catch (MalformedURLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(BufferedReader br) { 
      if(br == null){ 
       Log.v(LOG_TAG, "br from set averages is null"); 
       return; 
      } 

      Log.v(LOG_TAG, "Get Averages onPostExecute"); 
      try{ 

       Log.i(LOG_TAG, "br value is " + br.toString()); 
       Log.i(LOG_TAG, "about to set up json array...."); 

       JSONObject inputjson = new JSONObject(br.readLine()); 
       //JSONArray inputjson = new JSONArray(br.readLine()); 
       Log.i(LOG_TAG, "this worked...."); 

       Log.i(LOG_TAG, "size of inputjson = " + inputjson.length()); 
       return; 
      }catch(NullPointerException e){ 
       Log.e(LOG_TAG, "Unable to get averages, NullPointerException"); 
       e.printStackTrace(); 
      }catch(NumberFormatException e){ 
       Log.e(LOG_TAG, "Unable to get averages, Number Format Exception"); 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       Log.e(LOG_TAG, "JSON Exception"); 
       e.printStackTrace(); 
      } catch (IOException e) { 
       Log.e(LOG_TAG, "IO Exception"); 
       e.printStackTrace(); 
      } 

      return; 
     } 

はlogcatからの抜粋です。

12-22 20:07:59.345: INFO/HA(1000): br value is [["84.0158352941176"],["84.0158352941176"]] 
12-22 20:07:59.355: VERBOSE/HA(1000): Get Averages onPostExecute 
12-22 20:07:59.355: INFO/HA(1000): br value is [email protected] 
12-22 20:07:59.355: INFO/HA(1000): about to set up json array.... 
12-22 20:07:59.355: ERROR/HA(1000): Unable to get averages, NullPointerException 
+0

なぜオブジェクトを作成するのにbr.readLineを使用しますか? – gwa

+0

br.readlineは、JSON配列またはJSONオブジェクトにフォーマットできるはずの配列を返します。この配列をオブジェクト自体に渡すのは問題ないでしょうか?私は間違っている可能性があります。 –

答えて

0

BufferedReaderのBR =新しいBufferedRe .. Log.i(LOG_TAG、+ br.readLine( "BRの値が" ));

   JSONObject inputjson = new JSONObject(br.readLine()); 

あなたは、もはや文字列を持っていない:あなたがここに着いたとき

は、ここではあなたはとてもラインバッファを取っています。

この行を削除してくださいLog.i(LOG_TAG、 "br値は" + br.readLine());

幸運!

+0

これが問題でした。ありがとうございました!私はこれが本当であることを知らなかった。 –

関連する問題