java - 从 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);
}
解决方案
我观察到一个错误,我修改了如下代码。并使用 StringBuffer 来提高性能。
StringBuffer sb = new StringBuffer();
String line = "";
while(( line = bufferedReader.readLine()) != null )
{
sb.append(line);
}
data = sb.toString();
推荐阅读
- visual-studio - 如何降级 Visual Studio 2017 版本?
- javascript - 节点/javascript中的“位置”属性
- azure - Login-AzureRmAccount :-Credential 参数只能与组织 ID 凭据一起使用
- freemarker - 计算列表中的值
- wso2 - 导入 API 时出错,因为 API 反映在 api 发布者中,但在 APIMCLI 中引发错误
- python - 给定整数列表,删除列表的奇数位置(从位置 1(索引 0)开始,直到列表在最短时间包含单个元素
- java - 在内存中解压缩多部分格式文件
- react-native - 如何使用反应导航获得模态效果?
- laravel - Laravel 6.0 中的“调用未定义函数 str_slug()”
- arm - STM32 - 如何在 HAL 库中为外设 R/W 选择 DMA 或中断