0

好的,所以我正在尝试运行一个非常基本的 java 脚本来检索外汇报价,然后使用。

我正在使用的代码如下:

import java.net.*;
import java.io.*;

public class forex {
    public static void main(String[] args) throws Exception {
        URL oanda = new URL("http://api-sandbox.oanda.com/v1/prices?instruments=EUR_USD");
        URLConnection yc = oanda.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(
                                    yc.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) 
            System.out.println(inputLine);
        in.close();
    }
}

当我执行脚本时,我得到以下信息:

{
    "prices" : [
        {
            "instrument" : "EUR_USD",
            "time" : "2014-05-18T13:47:57.376221Z",
            "bid" : 1.25482,
            "ask" : 1.25491
        }
    ]
}

我根本无法解决的是如何将结果解析为可用的变量以从那里开始使用?

非常感谢任何帮助!

4

2 回答 2

0

我会使用 Jackson,然后创建一个名为 Prices 的 POJO 类。价格将具有工具、时间、出价和要价作为实例变量,以及 getter/setter。

然后,您可以使用 Jackson 将解析的 JSON 映射到您的价格对象并使用 getter 检索值。它使它非常简单。

Maven 依赖: https ://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core

您的主要方法如下所示:

import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.File;

public class Driver {

public static void main(String[] args) {

try {

  //create object mapper
  ObjectMapper mapper = new ObjectMapper();

  //read JSON file and convert to POJO

  Prices prices = mapper.readValue(new File("data/sample.json"), Prices.class);

  //print info

  System.out.println("Instrument: " + prices.getInstrument());
  System.out.println("Time: " + prices.getTime());
  System.out.println("Bid: " + prices.getBid()); 
  Sytem.out.println("Ask: " + prices.getAsk()); 



}

catch (Exception e) {
  e.printStackTrace();
}
 }
}
于 2018-06-20T04:17:25.790 回答
0

如果您打算使用 Java,为什么不使用 Dukascopy Jforex 平台呢?我相信你会更快地完成你的工作。您可以直接将数据从您的 Java 平台拉取到您的应用程序。

于 2018-06-20T02:56:44.940 回答