【发布时间】:2018-11-18 23:51:55
【问题描述】:
我正在尝试解析 JSON,但我的代码无法与一个 URL 一起使用,而它与其他 URL 一起使用。我认为这是有问题的昏迷,但我不确定,所以请查看我的代码并提供帮助。 我试图用循环中的点替换昏迷,但我得到的是 JSON 异常。当我更改 URL 时,也不例外。令人困惑... 这不起作用 URL:http://api.hnb.hr/tecajn/v1 这是我测试过的一个,它可以工作:https://newsapi.org/v2/top-headlines?country=us&category=business&apiKey=e402c76fc8584a1c81849179f1277a74 虽然更改了 URL,但我也更改了数据,所以这不是写作问题..我猜
这是我的昏迷替换代码:
private String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new
InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line;
try {
while ((line = reader.readLine()) != null) {
String coma = line.replaceFirst(",",".");
sb.append(coma).append('\n');
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}
而另一部分带有 URL 和 JSONArray:
@Override
protected Void doInBackground(Void... arg0) {
URLconnection urlConn = new URLconnection();
// Making a request to url and getting response
String url = "http://api.hnb.hr/tecajn/v1";
//.........connection.........
String response = urlConn.makeServiceCall(url);
Log.e(TAG, "Response from url: " + response);
if (response != null) {
try {
JSONObject jsonObj = new JSONObject(response);
// Getting JSON Array node
arr = jsonObj.getJSONArray("values");
for (int i = 0; i < article.length(); i++) {
JSONObject c = arr.getJSONObject(i);
header = c.getString("Valuta");
}
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error.");
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: 216",
Toast.LENGTH_LONG).show();
}
});
}
【问题讨论】:
-
sigh... 请使用支持 JSON 的 http 库。不要一遍又一遍地重新实现 HTTP 和 AsyncTask 的轮子/复制代码