Boa noite,
Ao revisar o código com a ajuda de uma IA, encontrei uma forma de desserializar uma lista utilizando TypeReference. Quando estava resolvendo o desafio, não pensei nessa abordagem que a professora Jack utilizou. Minha primeira tentativa foi apenas alterar os parâmetros de saída e o método obterDados, porém isso acabou gerando um erro.
@Override
public <T> List<T> obterDados(String json, Class<T> classe) {
try {
return mapper.readValue(json, classe);
} catch (Exception e) {
return null;
}
}
Com a ajuda da IA, consegui implementar da seguinte forma:
@Override
public <T> List<T> obterLista(String json, TypeReference<List<T>> tipo) {
try {
return mapper.readValue(json, tipo);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
Pelo que entendi, isso acontece porque, no momento da execução, o Java perde a informação do tipo da lista . Utilizando TypeReference, conseguimos manter essa referência de tipo, permitindo que o Jackson faça a desserialização corretamente para List.