在java中从URL提取实时汇率

在java中从URL提取实时汇率,java,Java,我正在尝试制作一个程序,使用实时汇率将给定的货币兑换成不同的货币。 以下是我从exchangeratesapi.io获取数据的方式: URL url = new URL("https://api.exchangeratesapi.io/latest?symbols=USD,GBP"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET");

我正在尝试制作一个程序,使用实时汇率将给定的货币兑换成不同的货币。 以下是我从exchangeratesapi.io获取数据的方式:

    URL url = new URL("https://api.exchangeratesapi.io/latest?symbols=USD,GBP");
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setRequestMethod("GET");

    BufferedReader in = new BufferedReader(new InputStreamReader(
        con.getInputStream()));
    String inputLine;
    while ((inputLine = in.readLine()) != null) {
      System.out.println(inputLine);
    }
代码返回当前的汇率({“汇率”:{“USD”:1.1029,“GBP”:0.84183},“基数”:“EUR”,“日期”:“2020-01-30”),但我不知道如何将1.1029转换成方程式。

基数是欧元。如果你查看他们的github页面,你会在自述文件中看到“默认情况下,汇率是对欧元报价的。通过在请求中设置基本参数,对不同的货币报价。”因此,这意味着如果你输入100,它将看到100欧元的汇率。因此,要找到另一个值,它将是:

金额*汇率=该符号的值

因此,在100欧元的例子中:

100*1.1029=110.29美元

编辑:根据您的评论进行更新。下面是使用您可以找到的org.json库获取值的方法

publicstaticvoidmain(字符串[]args)引发异常{
字符串jsonString=“{\”汇率\“:{\”美元\“:1.1029,\”英镑\“:0.84183},\”基数\“:\”欧元\“,\”日期\“:\”2020-01-30 \“}”;
双重汇率=getExchangeRate(jsonString);
系统输出打印项次(费率);
}
公共静态双getExchangeRate(字符串jsonInput){
JSONObject对象=新的JSONObject(jsonInput);
双重费率=object.getJSONObject(“费率”).getDouble(“美元”);
回报率;
}
输出:

1.1029
如果您对使用这种东西还不熟悉,而JSON让您感到困惑,我建议您阅读一些关于它如何工作的教程。这将是一个良好的开端

我希望这有帮助

class Rate {
   public double USD;
   public double GBP;

}

class RateContainer{
    public Rate rates;
    public String base;
    public String date;

}
在您的gradle文件中:

dependencies {
  implementation 'com.google.code.gson:gson:2.8.6'
}

Gson gson = Gson();
RateContainer container = gson.fromJson(inputLine,RateContainer.class);

Systen.out.println(container.rates.USD + "");

使用JSONObject导入:

import org.json.JSONObject;
最后几行代码的小改动:

URL url = new URL("https://api.exchangeratesapi.io/latest?symbols=USD,GBP");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");

BufferedReader in = new BufferedReader(new InputStreamReader(
    con.getInputStream()));

String jsonText = readAll(in);
JSONObject yourData = new JSONObject(jsonText);
这是readAll:

private static String readAll(Reader rd) throws IOException {
    StringBuilder sb = new StringBuilder();
    int cp;
    while ((cp = rd.read()) != -1) {
            sb.append((char) cp);
    }
    return sb.toString();
}
之后,您的数据就是一个JSONObject,您可以像下面这样获得请求的值:

double yourRate = yourData.getJSONObject("rates").getDouble("USD");

那么我如何得到汇率呢?你是在问如何解析JSON吗?我只是想澄清一下,这样我才能更好地回答你。是的,我想这就是我需要的。我想从网站上获取一个数字,用于计算金额*(需要的数字)=新货币的价值。对不起,第二个代码是什么意思?我的gradle文件是什么?您使用的是哪个构建系统?导入java.io.BufferedReader;导入java.io.IOException;导入java.io.InputStreamReader;导入java.net.HttpURLConnection;导入java.net.URL;导入java.util.*;导入java.text.DecimalFormat;不,哪种方法构建了你的项目?对不起,我不太明白你的意思。这是我的第一个项目,我了解java已经有一个星期了。非常感谢,伙计,这确实很有帮助。我得到的唯一问题是我有一个错误:对于类型jsonObjectOps,getFloat(String)方法未定义。应该是双倍的。我的错!双倍费率=。。。。获得双倍(“美元”);运行错误:错误:无法初始化主类mainpackage1.CurrencyExchange导致:java.lang.NoClassDefFoundError:org/json/JSONException我将java-json.jar添加到我的库中,但仍然有这个问题这可能会帮助您:以后有一些问题,但现在一切正常。非常感谢你,伙计!