使用Gson / Java解析Alpha Vantage API

问题描述

我试图使用gson解析json数据。当我尝试使用GSON解析它时,总是会收到格式错误的JSON异常

com.google.gson.JsonSyntaxException: 
com.google.gson.stream.MalformedJsonException: Expected ':' at line 1 column 8 path $.Meta
        at com.google.gson.Gson.fromJson(Gson.java:947)
        at com.google.gson.Gson.fromJson(Gson.java:897)
        at com.google.gson.Gson.fromJson(Gson.java:846)
        at com.google.gson.Gson.fromJson(Gson.java:817)
com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected ':' at line 1 column 8 path $.Meta
        at com.google.gson.Gson.fromJson(Gson.java:947)
        at com.google.gson.Gson.fromJson(Gson.java:897)
        at com.google.gson.Gson.fromJson(Gson.java:846)
        at com.google.gson.Gson.fromJson(Gson.java:817)

以下是原始回复的摘要:

{
    "Meta Data": {
        "1. Information": "Intraday (5min) open,high,low,close prices and volume","2. Symbol": "IBM","3. Last Refreshed": "2020-08-28 17:00:00","4. Interval": "5min","5. Output Size": "Compact","6. Time Zone": "US/Eastern"
    },"Time Series (5min)": {
        "2020-08-28 17:00:00": {
            "1. open": "125.3000","2. high": "125.3000","3. low": "125.3000","4. close": "125.3000","5. volume": "703"
        },"2020-08-28 16:55:00": {
            "1. open": "125.3500","2. high": "125.3500","5. volume": "672"
        },.....
        .....
        .....
    }
}

尽管我可以在没有gson的情况下解析json,但我只是想了解我在这里做错了什么。

这是崩溃所在的行:

TimeSeriesStocks tSeries = new Gson().fromJson(stringResponse,TimeSeriesStocks.class);

其中

stringResponse = response.body().toString()

response.body()是我从api获得的响应。我可以看到响应很好。

这是TimeSeriesStocks类:

public class TimeSeriesStocks {

    @SerializedName("Meta Data")
    public LinkedTreeMap<String,LinkedTreeMap<String,String>> metaData;

    @SerializedName("Time Series (5min)")
    public LinkedTreeMap<String,String>> timeSeriesMap;

}

我尝试将LinkedTreeMap添加为类型令牌,但出现了相同的异常。我也尝试使用普通的自定义对象,但是response.body()曾引发错误,指出服务器正在发送LinkedTreeMap作为响应。尽管问题看上去很简单,但我只是想知道我要去哪里。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)