Gson从JSON对象反序列化列表

时间:2016-07-26 23:22:45

标签: android json gson deserialization

我调用一个返回以下结构的api:

{
page: 1,
results: [
{
poster_path: "/6FxOPJ9Ysilpq0IgkrMJ7PubFhq.jpg",
adult: false,
overview: "Tarzan, having acclimated to life in London, is called back to his former home in the jungle to investigate the activities at a mining encampment.",
release_date: "2016-06-29",
genre_ids: [
28,
12
],
id: 258489,
original_title: "The Legend of Tarzan",
original_language: "en",
title: "The Legend of Tarzan",
backdrop_path: "/75GFqrnHMKqkcNZ2wWefWXfqtMV.jpg",
popularity: 27.931248,
vote_count: 655,
video: false,
vote_average: 4.6
},

... MORE MOVIES ...
}

我感兴趣的部分就是电影对象的数组。 我的电影课有以下方法:

public static TypeAdapter<Movie> typeAdapter(Gson gson) {
    return new AutoValue_Movie.GsonTypeAdapter(gson);
}

这就是我构建我传递给改造实例的Gson对象的方式:

        Gson gson = new GsonBuilder()
                .registerTypeAdapterFactory(new AutoValueGsonTypeAdapterFactory())
                .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
                .create();

我在我的DataManager中使用以下方法进行api调用:

public Observable<Movie> syncMovies(int page) {
    return mMovieService.getPlayingMovies(page)
            .concatMap(new Func1<List<Movie>, Observable<Movie>>() {
                @Override
                public Observable<Movie> call(List<Movie> movies) {
                    return mDatabaseHelper.setMovies(movies);
                }
            });
}

获取播放电影返回Observable&lt;列表与LT;电影&gt;取代。问题是我收到一条错误消息:预期BEGIN_ARRAY但是BEGIN_OBJECT。

我认为问题在于我的JSON确实是一个对象。我怎样才能提取数组并将其解析为List&lt;电影&gt;?

对于无知感到抱歉,但我对Gson来说是全新的。

0 个答案:

没有答案