Tive uns problemas na hora de usar o Gson, por isso fiz meu próprio JsonDeserializer.
Não sei se é uma boa prática fazer de forma customizada, mas acredito que ficou bom.
public class MovieDeserializer implements JsonDeserializer<Movie> {
@Override
public Movie deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws JsonParseException {
JsonObject object = json.getAsJsonObject();
String title = object.get("Title").getAsString();
int year = object.get("Year").getAsInt();
String director = object.get("Director").getAsString();
String genre = object.get("Genre").getAsString();
String description = object.get("Plot").getAsString();
String[] runtime = object.get("Runtime").getAsString().split(" ");
int minutes = Integer.parseInt(runtime[0]);
return new Movie(title, year, minutes, genre, director, description);
}
}
Dessa forma não precisei utilizar as anotações do Gson na minha classe Movie.