No projeto final de curso do consumo da api da FIPE
eu criei uma record DadosMarcas apenas para receber os dados da marca desse jeito ( nao sei se era o mais indicado) :
@JsonIgnoreProperties (ignoreUnknown = true)
public record DadosMarcas(
@JsonAlias("codigo") String codigo,
@JsonAlias("nome") String nome
) {
}
beleza, ai na minha classe principal ficou dessa maneira:
public class Principal {
private final String ENDERECO = "https://parallelum.com.br/fipe/api/v1/";
private final String MARCAS = "/marcas";
private Scanner leitura = new Scanner(System.in);
private ConsumoApi consumindoApi = new ConsumoApi();
private ConverteDados converteDadosParaJson = new ConverteDados();
public void exibeMenu(){
var menu = """
**OPCOES**
-------------
carros
motos
caminhoes
--------------
DIGITE UMA DAS OPCOES PARA CONSULTAR
\n
""";
System.out.println(menu);
var opcaoDigitadaPeloUsuario = leitura.nextLine().toLowerCase();
var json = consumindoApi.obterDados(ENDERECO+opcaoDigitadaPeloUsuario+MARCAS);
DadosMarcas dadosMarcas = converteDadosParaJson.obterDados(json, DadosMarcas.class);
System.out.println(dadosMarcas);
acontece que como o retorno da API 'e um array de json desse maneira:
[
{
"codigo": "1",
"nome": "Acura"
},
{
"codigo": "2",
"nome": "Agrale"
},
{
"codigo": "3",
"nome": "Alfa Romeo"
},
{
"codigo": "4",
"nome": "AM Gen"
},
]
na hora de desserializar os dados
ele me retornar esse erro:
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `com.example.ConsultaFIPE.model.DadosMarcas` from Array value (token `JsonToken.START_ARRAY`)
Alguem me da uma luz de como tratar esse json antes ou fazer minha record receber os dados em formato de lista talvez
att