Как получить валюту от Json? - PullRequest
0 голосов
/ 07 июля 2019

Я хочу получить валюту от 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в обратной линии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...