1
resposta

ERRO: Cannot deserialize value of type

Alguém pode me auxiliar nesse erro?

com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type [Lbr.com.alura.domain.Abrigo; from Object value (token JsonToken.START_OBJECT) at [Source: REDACTED (StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION disabled); line: 1, column: 1] at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59) at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1767) at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1541) at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1488) at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.handleNonArray(ObjectArrayDeserializer.java:345) at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:197) at com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer.deserialize(ObjectArrayDeserializer.java:27) at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4899) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3846) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3814) at br.com.alura.service.AbrigoService.listarAbrigo(AbrigoService.java:24) at br.com.alura.AdopetConsoleApplication.main(AdopetConsoleApplication.java:29)

1 resposta

Olá, Pietra! Tudo bem?

O erro com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type geralmente ocorre quando o Jackson tenta desserializar um objeto JSON para um tipo de objeto Java que não corresponde.

No seu caso, o erro está acontecendo porque o Jackson está tentando desserializar um objeto JSON para um array de Abrigo, mas está encontrando um objeto JSON em vez de um array JSON.

Para corrigir esse problema, você precisa garantir que os dados JSON que você está tentando desserializar correspondam ao tipo de objeto Java que você deseja criar.

Por exemplo, se o JSON que você está tentando desserializar é algo como:

{
  "nome": "Abrigo 1",
  "telefone": "123456789",
  "email": "abrigoum@gmail.com"
}

Você deve desserializá-lo para um objeto Abrigo, não para um array de Abrigo. O código seria algo como:

Abrigo abrigo = objectMapper.readValue(jsonString, Abrigo.class);

Por outro lado, se o JSON que você está tentando desserializar é um array, como:

[
  {
    "nome": "Abrigo 1",
    "telefone": "123456789",
    "email": "abrigoum@gmail.com"
  },
  {
    "nome": "Abrigo 2",
    "telefone": "987654321",
    "email": "abrigodois@gmail.com"
  }
]

Você deve desserializá-lo para um array de Abrigo:

Abrigo[] abrigos = objectMapper.readValue(jsonString, Abrigo[].class);

Portanto, verifique se os dados JSON que você está tentando desserializar correspondem ao tipo de objeto Java que você deseja criar.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software