No existen creadores, como la construcción predeterminada): no se puede deserializar desde el valor del objeto (no existe un creador basado en delegados o propiedades).

Resuelto José Nobre asked hace 54 años • 34 respuestas

Estoy intentando consumir una API usando Retrofit y Jackson para deserializar. Recibo el error onFailure No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator.

José Nobre avatar Jan 01 '70 08:01 José Nobre
Aceptado

Motivo: este error se produce porque Jackson Library no sabe cómo crear su modelo que no tiene un constructor vacío y el modelo contiene un constructor con parámetros que no anotó sus parámetros con @JsonProperty("field_name"). De forma predeterminada, el compilador de Java crea un constructor vacío si no agregó un constructor a su clase.

Solución: agregue un constructor vacío a su modelo o anote los parámetros del constructor con@JsonProperty("field_name")

Si utiliza una clase de datos de Kotlin, también puede anotar @JsonProperty("field_name")o registrar el módulo Jackson Kotlin en ObjectMapper.

Puede crear sus modelos usando http://www.jsonschema2pojo.org/ .

Bek avatar Nov 07 '2018 15:11 Bek

Llegué aquí buscando este error:

No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator

No tiene nada que ver con Retrofit, pero si estás usando Jackson, este error se resolvió agregando un constructor predeterminado a la clase que arroja el error. Más aquí: https://www.baeldung.com/jackson-exception

Bits más relevantes del enlace de arriba:

"Esta excepción se produce si Jackson no puede acceder al constructor. Cuando intentamos deserializar una cadena JSON, JsonMappingException: No Suitable Constructor Foundse genera. Para resolver este problema, simplemente agregamos un constructor predeterminado:

    public Foo() {
        super();
    }

Ahora, cuando deserialicemos, el proceso funcionará bien".

Fede Mika avatar Jul 07 '2019 16:07 Fede Mika

Si está utilizando Lombok en un modelo POJO , asegúrese de tener estas anotaciones:

@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor

Podría variar, pero asegúrate @Gettery sobre todo@NoArgsConstructor .

silver_fox avatar Dec 10 '2019 21:12 silver_fox