私は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
なぜオブジェクトを作成するのにbr.readLineを使用しますか? – gwa
br.readlineは、JSON配列またはJSONオブジェクトにフォーマットできるはずの配列を返します。この配列をオブジェクト自体に渡すのは問題ないでしょうか?私は間違っている可能性があります。 –