【发布时间】:2018-01-10 22:56:09
【问题描述】:
我试图在 jersey/java 中使用 Rest 服务。 我请求的链接类似于
https://www.alphavantage.co/query?function=BATCH_STOCK_QUOTES&symbols=MSFT,FB,AAPL&apikey=demo 注意这是一个演示链接。
JSON 响应如下:
{
"Meta Data": {
"1. Information": "Batch Stock Market Quotes",
"2. Notes": "IEX Real-Time Price provided for free by IEX (https://iextrading.com/developer/).",
"3. Time Zone": "US/Eastern"
},
"Stock Quotes": [
{
"1. symbol": "MSFT",
"2. price": "87.8300",
"3. volume": "18638820",
"4. timestamp": "2018-01-10 16:00:00"
},
{
"1. symbol": "FB",
"2. price": "187.8100",
"3. volume": "10515752",
"4. timestamp": "2018-01-10 16:00:00"
},
{
"1. symbol": "AAPL",
"2. price": "174.2500",
"3. volume": "23771860",
"4. timestamp": "2018-01-10 16:00:00"
}
]
}
我的问题是如何在 java 类中正确映射它? 这是我尝试过的
StockREST.java
public class StockREST {
private String symbol;
private float price;
private float volume;
private String timestamp;
public String getStockQuotes() {
return StockQuotes;
}
public void setStockQuotes(String StockQuotes) {
this.StockQuotes = StockQuotes;
}
private String StockQuotes;
public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public float getVolume() {
return volume;
}
public void setVolume(float volume) {
this.volume = volume;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
@Override
public String toString() {
return "Symbol = " + symbol + " price, = "
+ price + ", volume = " + volume + ", timestamp = " + timestamp;
}
}
和
RESTclient.java
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.MediaType;
/**
*
* @author Me
*/
public class RESTclient {
public static void main(String[] args) {
Client client = ClientBuilder.newClient();
StockREST exchange = client.target("https://www.alphavantage.co/query?function=BATCH_STOCK_QUOTES&symbols=MSFT&apikey=B1KLWMIAGSG0UWYD")
.request(MediaType.APPLICATION_JSON)
.get(StockREST.class);
String symbol = exchange.getSymbol();
float price = exchange.getPrice();
float volume = exchange.getVolume();
String timestamp = exchange.getTimestamp();
System.out.println(exchange);
client.close();
}
}
SOUT 消息打印 Symbol = null price, = 0.0, volume = 0.0, timestamp = null
我尝试过使用数组/列表,但仍然感到困惑。谢谢
编辑
更新了 RESTClient.java
public class RESTclient {
public static void main(String[] args) {
Client client = ClientBuilder.newClient();
Response exchange = client.target("https://www.alphavantage.co/query?function=BATCH_STOCK_QUOTES&symbols=MSFT&apikey=B1KLWMIAGSG0UWYD")
.request(MediaType.APPLICATION_JSON)
.get(Response.class);
// String symbol = exchange.getSymbol();
MetaData metaData = exchange.getMetaData();
List<StockQuote> stockQuotes = exchange.getStockQuotes();
//float price = exchange.getPrice();
//float volume = exchange.getVolume();
//String timestamp = exchange.getTimestamp();
System.out.println(exchange);
client.close();
}
}
【问题讨论】:
标签: java json rest jersey jax-rs