这个数据格式是什么?我如何解析这个Java模型
我正在使用外部api(Binance)获取特定加密符号的价格,我收到的数据格式如下:这个数据格式是什么?我如何解析这个Java模型,java,dataformat,Java,Dataformat,我正在使用外部api(Binance)获取特定加密符号的价格,我收到的数据格式如下: [ [ 1614556800000, "15.00700000", "15.38700000", "14.14100000", "14.37900000", "453842.30000000",
[
[
1614556800000,
"15.00700000",
"15.38700000",
"14.14100000",
"14.37900000",
"453842.30000000",
1615161599999,
"6709971.37110000",
3535,
"216741.30000000",
"3217265.31930000",
"0"
],
[
1615161600000,
"14.43300000",
"14.85900000",
"14.05000000",
"14.29200000",
"539248.70000000",
1615766399999,
"7792792.20870000",
3549,
"278787.20000000",
"4045258.39210000",
"0"
]
]
api还解释了每个值的含义。我尝试为这些字段创建Java模型,并使用RestTemplate解析它们,但不起作用
PriceChange[] priceChangeArray = restTemplate.getForObject(uri, PriceChange[].class);
我希望这个API上有JSON格式,因为其他端点使用这种格式返回值。我问这个问题是因为我想避免为此创建解析器
编辑:
字段说明:
[
1499040000000, // Open time
"0.01634790", // Open
"0.80000000", // High
"0.01575800", // Low
"0.01577100", // Close
"148976.11427815", // Volume
1499644799999, // Close time
"2434.19055334", // Quote asset volume
308, // Number of trades
"1756.87402397", // Taker buy base asset volume
"28.46694368", // Taker buy quote asset volume
"17928899.62484339" // Ignore.
]
PriceChange.java
@Entity
@IdClass(PriceChangeKey.class)
public class PriceChange {
@Id
private String symbol;
private String interval;
@Id
@Temporal(TemporalType.TIMESTAMP)
private Date openTime;
@Id
@Temporal(TemporalType.TIMESTAMP)
private Date closeTime;
private Double open;
private Double high;
private Double low;
private Double close;
private Double volume;
private Double quoteAssetVolume;
private Integer numberOfTrades;
private Double takerBuyBaseAssetVolume;
private Double takerBuyQuoteAssetVolume;
private Double ignore;
}
格式是JSON,但不适合自动解析为POJO
解析到对象[]【】
,然后手动将条目映射到POJO
Object[][]data=restemplate.getForObject(uri,Object[][]class);
List priceChanges=new ArrayList();
对于(对象[]记录:数据){
价格变化。添加(新的价格变化)(
((数字)记录[0]).longValue(),
新的BigDecimal((字符串)记录[1]),
新的BigDecimal((字符串)记录[2]),
新的BigDecimal((字符串)记录[3]),
新的BigDecimal((字符串)记录[4]),
新的BigDecimal((字符串)记录[5]),
((数字)记录[6]).longValue(),
新的BigDecimal((字符串)记录[7]),
((数字)记录[8]).intValue(),
新的BigDecimal((字符串)记录[9]),
新的BigDecimal((字符串)记录[10]),
新的BigDecimal((字符串)记录[11]);
}
或者使用setter方法和任何合适的数据类型。您的价格变化模型是什么样子的?请为每个值提供一些关于api解释的信息。我已经用其他信息编辑了这个问题,但Andreas的解决方案已经足够好了