我正在尝试解析JSON,而我的代码不适用于一个URL,而适用于其他URL。我认为这是有问题的昏迷,但我不确定,因此请查看我的代码和帮助。 我试图用循环中的点替换昏迷,但我得到的是JSON异常。而且,当我更改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();
}
});
}
答案 0 :(得分:1)
逗号不是问题。这是第一个角色。一个是方括号,另一个是花括号。
因此,您需要将第一个响应解析为数组而不是对象
new JSONArray(response);
话虽如此,所以您不能对两个URL使用相同的方法