首页 > 解决方案 > 从 URL 获取 JSON 数据并保存到变量以显示

问题描述

我在获取 json 数据时遇到问题,我已经关注了 youtube 或一些关于从 url 获取 json 数据的教程。我想将获取数据写入字符串数据并显示到 MainActivity 的 TextView,如“onPostExecute()”。我想,我的代码有问题,你能帮忙检查一下我的代码吗?


{  "zone":"SGR01",
   "start":"14-01-2020",
  "end":"14-01-2020",
   "locations":[
    "Gombak","Hulu Selangor","Rawang","Hulu Langat","Sepang","Petaling","Shah Alam"],
   "prayer_times":{
        "date":"14-01-2020",
        "datestamp":1578931200,
        "imsak":"6:02 am",
        "subuh":"6:12 am",
        "syuruk":"7:22 am",
        "zohor":"1:25 pm",
        "asar":"4:47 pm",
        "maghrib":"7:22 pm",
        "isyak":"8:36 pm"
        } 
}
//---------

public class fetchData extends AsyncTask<Void, Void, Void> {
String data ="";

 @Override
    protected Void doInBackground(Void... voids) {
 try {
            URL url = new URL("url");

            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line = "";
            while(line != null){
                line = bufferedReader.readLine();
                data = data + line;
    }
    } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
  @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        Log.d("DisplayData--",data);
        MainActivity.data.setText(data);
    }

标签: javaandroidjson

解决方案


我观察到一个错误,我修改了如下代码。并使用 StringBuffer 来提高性能。

     StringBuffer sb = new StringBuffer();
     String line = "";
     while(( line = bufferedReader.readLine()) != null ) 
     { 
         sb.append(line);
     }
     data = sb.toString();

推荐阅读