我想使用Gson从Json获取货币,但是我的方法返回null。货币值应为BigDecimal对象,我想使用货币符号作为方法参数来获取该值。
我创建了如下所示的方法rateFromApi(字符串货币)。我已经阅读了API并从我的理解
rate = rootObj.get(currency).getAsBigDecimal();
应为可变汇率分配货币名称所映射的值。 我已经发现类似的问题here 但是我仍然不明白我在代码中做错了什么。
//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"));
我认为可以通过使用行rootObj.get(currency).getAsBigDecimal();
来解析Json
映射到货币名称的值将作为BigDecimal分配给可变汇率,但我得到的结果是返回行中的NullPointerException。