我使用Java下载一些信息。我收到的JSON格式如下:
[[40217657,1498658666000,-0.08537438,2498.9],(...)]
我的问题是我不知道如何构建包装类,因为这个JSON没有关键字。
这是我尝试使用的包装类:
package TaskFormats;
public class TaskBitFinexTrades {
private double[] info;
public TaskBitFinexTrades(double[] info) {
super();
this.info = info;
}
public double[] getInfo() {return info;}
public void setInfo(double[] info) {this.info = info;}
@Override
public String toString() {
return "[TimeStamp:" + info[1] + ",Id:" + info[0] + ",amount:" + info[2] + ",price:" + info[3] ;
}
}
以下是我尝试使用Gson的方式
public void loadBitFinexTrades(){
String url = "https://api.bitfinex.com/v2/trades/tBTCUSD/hist/?limit=1000";
String json="";
try{
json = conecction(url);
System.out.println(json);
} catch (Exception e) {e.printStackTrace();}
if(json!=""){
Gson gson = new Gson();
Type type = new TypeToken<List<TaskBitFinexTrades>>() {}.getType();
List<TaskBitFinexTrades> fromJson = gson.fromJson(json, type);
for (TaskBitFinexTrades task : fromJson) {
System.out.println(task);
}
}
}
任何帮助将不胜感激。
答案 0 :(得分:2)
你拥有的是数组的JSON数组,而不是对象。不要试图从JSON读取对象,而是阅读double[][]
并手动重建对象。
下面的代码是临时编写的,为了表明我的观点,还没有尝试过,可能需要一些调整
Gson gson = new Gson();
double[][] infos = gson.fromJson(json, double[][].class);
List<TaskBitFinexTrades> result = Lists.newArrayList(); //see: guava
for (double[] info: infos)
result.add(new TaskBitFinexTrades(info));
for (TaskBitFinexTrades task : result) {
System.out.println(task);
}