332 votes

Il n'existe pas de créateurs, comme la construction par défaut) : on ne peut pas désérialiser à partir de la valeur d'un objet (il n'existe pas de créateur basé sur un délégué ou une propriété).

J'essaie de consommer une API en utilisant Retrofit et Jackson pour désérialiser. J'obtiens l'erreur onFailure No Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator .

2 votes

Il semble que vous n'utilisiez pas le module Jackson pour Kotlin, qui fonctionne avec les classes de données qui n'ont pas de constructeur par défaut, ce qui n'est pas le cas de la vôtre. Vérifiez ce module et voyez si vous avez des problèmes par la suite.

0 votes

Veuillez modifier la réponse acceptée.

1voto

CodingBee Points 21

Ajouter un constructeur dans la classe OU si vous utilisez pojo, ajoutez @NoArgsConstructor @AllArgsConstructor

Inclure également JsonProperty - @JsonProperty("name") private List<Employee> name;

0voto

Clement Points 775

Si vous utilisez Unirest comme bibliothèque http, en utilisant l'option GsonObjectMapper au lieu de la JacksonObjectMapper fonctionnera également.

<!-- https://mvnrepository.com/artifact/com.konghq/unirest-object-mappers-gson -->
<dependency>
    <groupId>com.konghq</groupId>
    <artifactId>unirest-object-mappers-gson</artifactId>
    <version>2.3.17</version>
</dependency>

Unirest.config().objectMapper = GsonObjectMapper()

0voto

MohanaRao SV Points 833

Si vous utilisez Lombok builder, vous obtiendrez l'erreur ci-dessus.

 @JsonDeserialize(builder = StationResponse.StationResponseBuilder.class)
 public class StationResponse{
   //define required properties 
 }     

 @JsonIgnoreProperties(ignoreUnknown = true)
 @JsonPOJOBuilder(withPrefix = "")
 public static class StationResponseBuilder {}

Référence : https://projectlombok.org/features/Builder Avec Jackson

0voto

miradham Points 1326

J'ai pu résoudre ce problème en Kotlin avec l'aide de @JacksonProperty annotation. L'exemple d'utilisation pour le cas ci-dessus serait :

import com.fasterxml.jackson.annotation.JsonProperty
...
data class Station(
     @JacksonProperty("repsol_id") val repsol_id: String,
     @JacksonProperty("name") val name: String,
...

0voto

Madis Männi Points 11

La cause de mon problème me semble très peu commune, je ne suis pas sûr que quelqu'un d'autre obtienne l'erreur dans les mêmes conditions, j'ai trouvé la cause en différenciant les commits précédents, voilà :

Dans mon build.gradle, j'utilisais ces deux options de compilation, et le fait de commenter cette ligne a réglé le problème.

//compileJava.options.compilerArgs = ['-Xlint:unchecked','-Xlint:deprecation']

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X