У меня есть ошибка при анализе Json в Android Studio, Пожалуйста, если у вас есть какие-либо идеи, можете ли вы поделиться, где моя ошибка.
Я хочу получить информацию о текущем обменном курсе и распечатать ее в текстовом виде.
URL-адрес Json/Api: https://api.exchangeratesapi.io/latest?base=USD
private void jsonParse() {
String SHOP_URL = "https://api.exchangeratesapi.io/latest?base=USD&symbols=EUR,GBP";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, SHOP_URL, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("rates");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject result = jsonArray.getJSONObject(i);
int xGBP=result.getInt("GBP");
usdtry.setText(String.valueOf(xGBP));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
pRequestQueue.add(request);
}
Этот код не ошибается, но не отвечает. Я думаю, что у меня чего-то не хватает.
rates
— это JsonObject
, а не массив.
Итак, ваш код должен быть
JSONObject rates = response.getJSONObject("rates");
double xGBP = rates.getDouble("GBP");
usdtry.setText(String.valueOf(xGBP));
Также для лучшего форматирования можно использовать:
DecimalFormat formatter = new DecimalFormat("###,###.##", DecimalFormatSymbols.getInstance(Locale.ENGLISH));
usdtry.setText(formatter.format(xGBP));
@ЛютфуА. Вы должны получать какие-то журналы ошибок от e.printStackTrace();
, которые у вас есть. Пожалуйста, разместите их в вопросе
Тогда вам просто нужно отладить его. Попробуйте распечатать ответ JSON и объект ставок
Где я должен добавить URL-адрес при использовании только объекта Jsonobject? Требуется ли ответ?
Спасибо за решение. Я понял, где моя ошибка.
Спасибо, я изменил свой код, как и ваше решение, но все еще не показываю результат в своем текстовом представлении. Нужно ли использовать часть JsonObjectRequest?