Quero consumir uma outra API de filmes. O Json que ela retorna é o seguinte:
Ou seja, ela envia dentro de um array. Como não consegui utilizar com o Gson(), vi que em outro curso aqui da Alura, a utilização do Jackson.databind, ai tentei e meu código ficou da seguinte maneira:
@GetMapping("/now")
@ResponseStatus(HttpStatus.OK)
public List<DadosMovieTMDB> dadosMovice () throws IOException, InterruptedException {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(uri + "/discover/movie?include_adult=false&language=pt-br"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.header("authorization", apiKey)
.header("accept", "application/json")
.build();
HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
JsonNode jsonNode = new ObjectMapper().readTree(response.body()).get("results");
List<DadosMovieTMDB> dadosMoviesList = new ArrayList<>();
jsonNode.elements().forEachRemaining(movie -> {
dadosMoviesList.add(new DadosMovieTMDB(
movie.get("title").toString(), movie.get("overview").toString(),
movie.get("release_date").toString(), movie.get("backdrop_path").toString(),
movie.get("vote_average").asDouble()));
});
dadosMoviesList.stream().forEach(movie -> System.out.println(movie.toString()));
return dadosMoviesList;
}
O problema que estou enfrentando, é que na deserialização as chaves estão vindo com um formato estranho (""), dessa forma:
1- Gostaria de tirar as aspas de forma que não utilizasse o replace ou substring, pois acredito(não tenho certeza) que utilizar o replace nesse caso, seria uma má prática um vez que deve ter alguma forma melhor para solucionar este problema. 2- Tem um jeito mais profissional de fazer essa requisição ou forma como estou fazendo esta ok?
Qualquer dica de código é sempre bem vinda.