2017-06-28 85 views
0

我正在使用Java下載一些信息。我收到一個JSON格式如下:使用Gson解析不尋常的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

你知道你得到了什麼沒有,事實上是有效的JSON ? – Vogel612

+0

*「由於此Json沒有關鍵字」* JSON中只有3個關鍵字:true,false和null。大多數JSON文本都不使用它們,那麼這與什麼有關? – Andreas

+0

@ Vogel612我認爲我們可以假設'.....'不是字面意思,只是意味着實際的JSON文本有更多的子數組,這是爲了我們的好處而縮短的,在這種情況下,它是完全有效的JSON。 – Andreas

回答

2

你有什麼是數組的JSON數組,而不是一個對象。不要嘗試從JSON讀取對象,請閱讀double[][]並手動重建對象。下面

代碼編寫的ad-hoc,以示我的觀點,還沒有嘗試過,可能需要一些調整

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); 
} 
+0

非常感謝。現在它的工作=) – DiegoLamus

+0

在您的服務,男人。 –