BufferedReader v / s java中的InputStreamReader

时间:2017-03-01 02:11:02

标签: android json bufferedreader

对于JSON解析,哪两个更好,因为我使用了InputStreamReader,而我的JSONArray总是返回空...所以将它改为BufferedReader会有什么不同?我甚至在url中添加了API Key,它仍显示NPE ... logcat中的错误是arr.length()用于空对象......

public class DownloadTask extends AsyncTask<String, Void, String>{

@Override
protected String doInBackground(String... urls) {

    String result = "";
    URL url;
    HttpURLConnection httpURLConnection = null;

    try {
        url = new URL(urls[0]);
        httpURLConnection = (HttpURLConnection) url.openConnection();
        InputStream in = httpURLConnection.getInputStream();
        InputStreamReader reader = new InputStreamReader(in);
        int data = reader.read();
        while(data != -1){
            char current = (char) data;
            result += current;

            data = reader.read();
        }
        return result;

    }
    //combined the exceptions MalformedURL and IOException to a common to display a toast msg
    catch (Exception e) {
        e.printStackTrace();
    }

    return null;

}

@Override
protected void onPostExecute(String result) {
    super.onPostExecute(result);

    try {

        String message = "";

        JSONObject jsonObject = new JSONObject(result);

        String weatherInfo = jsonObject.getString("weather");

        Log.i("Weather content", weatherInfo);

        JSONArray arr = new JSONArray(weatherInfo);

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

            JSONObject jsonPart = arr.getJSONObject(i);

            String main = "";
            String description = "";

            main = jsonPart.getString("main");
            description = jsonPart.getString("description");

            if (main != "" && description != "") {

                message += main + ": " + description + "\r\n";

            }

        }

        if (message != "") {

            weatherReport.setText(message);

        } else {

            Toast.makeText(getApplicationContext(), "Could not find weather", Toast.LENGTH_LONG).show();

        }


    } catch (JSONException e) {

        Toast.makeText(getApplicationContext(), "Could not find weather", Toast.LENGTH_LONG).show();

    }

}

}

0 个答案:

没有答案