2017-06-28 25 views
0

私はJavaを使って情報をダウンロードしています。私の問題は、私は方法がわからないということですGsonを使って異常なJsonを構文解析する

[[40217657,1498658666000、-0.08537438,2498.9]、(...)]

:私は、次の形式でJSONを受け付けておりますこの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

はあなたが得たものがないことを知っています必要があるかもしれません? – Vogel612

+0

* "このJsonにはキーワードがないため" * JSONにはキーワードが3つしかありません: 'true'、' false'、 'null'です。ほとんどのJSONテキストはそれらを使用していないので、何が何と関係していますか? – Andreas

+0

@ Vogel612私たちは、 '.....'はリテラルではないと考えることができると思います。実際のJSONテキストにはより多くのサブアレイが含まれていることを意味します。 – Andreas

答えて

2

あなたが持っているものは、オブジェクトではなく配列のJSON配列です。 JSONからオブジェクトを読み込もうとするのではなく、double[][]を読んでオブジェクトを手動で再構築してください。

コードは以下のアドホックを書かれていた、私のポイントを表示するには、それを試していませんが、有効なJSON実際には、いくつかの微調整

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

あなたのサービスで、男。 –

関連する問題