Por qué jackson no es serializar esto?

@Data
public class IdentificacaoBiometricaDto {
    private Integer cdIdentifBiom;
    private String nrMatricula;
    private String deImpressaoDigital;
    private Integer cdFilialAtualizacao;
}

Yo estoy usando el retrofit 2.6.1, jackson 2.9.9 y lombok 1.8.10.

La excepción es la siguiente:

    Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class br.com.clamed.modelo.loja.dto.central.IdentificacaoBiometricaDto and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)
    at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)
    at com.fasterxml.jackson.databind.SerializerProvider.reportBadDefinition(SerializerProvider.java:1191)
    at com.fasterxml.jackson.databind.DatabindContext.reportBadDefinition(DatabindContext.java:313)
    at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.failForEmpty(UnknownSerializer.java:71)
    at com.fasterxml.jackson.databind.ser.impl.UnknownSerializer.serialize(UnknownSerializer.java:33)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:400)
    at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1392)
    at com.fasterxml.jackson.databind.ObjectWriter._configAndWriteValue(ObjectWriter.java:1120)
    at com.fasterxml.jackson.databind.ObjectWriter.writeValueAsBytes(ObjectWriter.java:1017)
    at retrofit2.converter.jackson.JacksonRequestBodyConverter.convert(JacksonRequestBodyConverter.java:34)
    at retrofit2.converter.jackson.JacksonRequestBodyConverter.convert(JacksonRequestBodyConverter.java:24)
    at retrofit2.ParameterHandler$Body.apply(ParameterHandler.java:355)
    ... 14 more

El mapeador de objetos:

    return new ObjectMapper().registerModule(new ParameterNamesModule())
                             .registerModule(new Jdk8Module())
                             .registerModule(new JavaTimeModule())
                             .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

Estoy configurando todos los campos, al pasar a un cuerpo de solicitud, remodelación de falla debido a que jackson podría no serializar el objeto.

Reconversión de la llamada:

@POST("/usuario/v1.0/cadastraBiometria")
Call<IdentificacaoBiometricaDto> cadastraBiometria(@Body IdentificacaoBiometricaDto identificacaoBiometricaDto);

Resto de servicios:

@RestController
@RequestMapping("/usuario")
public class UsuarioController {

    @PostMapping(value = "/v1.0/cadastraBiometria")
    public ResponseEntity<IdentificacaoBiometricaDto> cadastraBiometria(@RequestBody IdentificacaoBiometricaDto identificacaoBiometricaDto) {
    }
}

Actualización:

  • Si puedo cambiar la reconversión del convertidor a Gson funciona;
  • Si me serializar el uso de Jackson directamente, funciona;
  • La eliminación de lombok no hace ninguna diferencia;
0
2019-09-17 21:32:42
fuente
0 respuestas

Vea otras preguntas sobre etiquetas