2017-10-24 9 views
0

私はAlpha VantageのJavaライブラリパーサーを作成しています。ここではいくつかのデータをダウンロードするためのエンドポイントは、次のとおりです。JSONはブラケット内の一連のオブジェクトを逆シリアル化します{

https://www.alphavantage.co/query?function=DIGITAL_CURRENCY_INTRADAY&symbol=BTC&market=CNY&apikey=demo

あなたは過去のデータは、{}の中にはなく、[]に囲まれて見ることができるように。これをデシリアライズする考えはありますか?私はGsonを使用していますが、何も見つかりません。

+0

未知のリンクをクリックするような気がしません。 :)ここでサンプルjsonを投稿してください。しかし、あなたがする前でさえ、あなたが{}と[]の違いを理解していることを確認してください。私はGsonに慣れていませんが、JSONオブジェクトを逆シリアル化する方法がわからなければ、私はショックを受けます。 – yshavit

答えて

0

まず、あなたのJSON構造はおそらくあなたが望むものではありません。 「時系列(デジタル通貨日中)」の内容は、日付を表すと思われるプロパティを持つオブジェクトです。これは動的に生成されるため、最初から迷惑です。

{ 
    "Time Series (Digital Currency Intraday)": [ 
     { 
      "date": "2017-10-24 22:30:00", 
      "1a. price (CNY)": "34889.57919003", 
      "1b. price (USD)": "5259.23870358", 
      "2. volume": "5708.68994668", 
      "3. market cap (USD)": "30023363.11434300" 
     } 
    ] 
} 

これは芋、より良い構造のようになります。コンテンツは、(それがまた、日付の値を含めることができます)オブジェクトのリストになるかどうかは、本当に簡単になります。次に、プロパティ名をJavaフレンドリに変更し、POJOをいくつか作成するだけで、GSONで簡単に逆シリアル化することができます。参照:http://www.baeldung.com/gson-deserialization-guide

現在の構造を持つソリューションについては、JSONObjectのentitySet()メソッドを利用できます。

Set>オブジェクトを返します。ルートJsonオブジェクトを表すオブジェクトでこのメソッドを使用すると仮定すると、Mapオブジェクトで取得するString値は "Meta Data"と "Time Series(Digital Currency Intraday)"になります。これらはJSONのルートオブジェクトのプロパティです。そして、それらが関連付けられているJsonElementは、この場合は別のJSONオブジェクトのプロパティの値になります。

これを使用して、JSONがどのように構造化されているかを知ることができ、データをクラスの一部のオブジェクトにデシリアライズすることができます。もちろん、2つのループがあります。

関連する問題