我正在为Alpha Vantage编写Java Library Parser。以下是下载某些数据的端点:
如您所见,历史数据包含在{}中而不包含在[]中。你有什么想要反序列化这个吗?我正在使用Gson,但我找不到任何方式
答案 0 :(得分: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"
}
]
}
这将是一个更好的结构,imo。然后,您需要做的就是将属性名称更改为更友好的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结构的了解,将数据反序列化为类的某些对象。当然还有几个循环。