Я хочу получить валюту от Json, используя Gson, но мой метод возвращает ноль.Значение валюты должно быть объектом BigDecimal, и я хочу получить значение, используя символ валюты в качестве аргумента метода.
Я создал метод rateFromApi (String currency), показанный ниже.Я прочитал API, и из того, что я понял, строка
rate = rootObj.get(currency).getAsBigDecimal();
должна присвоить переменной ставке значение, на которое отображается название валюты.Я уже нашел подобную проблему здесь Но все же я не понимаю, что я делаю неправильно в своем коде.
//fields and method in class responsible for getting data from Json
private final String sURL = "http://data.fixer.io/api/latest?access_key...";
private URL url = new URL(sURL);
private URLConnection request = url.openConnection();
private JsonParser jp = new JsonParser();
public BigDecimal rateFromAPI(String currency) throws IOException {
request.connect();
BigDecimal rate;
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
JsonObject rootObj = root.getAsJsonObject();
return rate = rootObj.get(currency).getAsBigDecimal();
}
//expression in method main
//indicate which exactly currency has to be taken from Json
Zloty pln1 = eur.convertToPln(ratesGetter.rateFromAPI("PLN"));
Я думал, что Json будет проанализирован, и с помощью строки rootObj.get(currency).getAsBigDecimal();
значение, сопоставленное с именем валюты, будет присвоено переменной ставке как BigDecimal, но в результате я получу NullPointerExceptionв обратной линии.