Corriger l'erreur No Creators, like default construct, exist): cannot deserialize from Object value ?

Lorsque vous développez une application Android, la plupart des données que vous manipulez ne sont pas stockées directement sur le téléphone. Elles sont stockées sur des sites internet et on se sert d'API pour communiquer avec ces sites. Dans ce but, certaines librairies sont couramment utilisées lorsque vous développez avec les langages natifs du système, Java ou Kotlin. La librairie Retrofit permet par exemple de convertir des API en interface Java. On utilise également souvent la librairie Jackson, qui convertit des objets Java ou Kotlin en JSON et inversement. Le JSON est en effet le format de données le plus utilisé par les API Web. Le message d'erreur "No Creators, like default construct, exist): cannot deserialize from Object value" est lié à la librairie Jackson.

Ce message indique que la librairie n'a pas trouvé dans la classe Java de constructeur, ce qui l'empêche de pouvoir sérialiser des objets stockés en JSON. Il existe 2 solutions pour corriger ce problème, si vous n'avez pas besoin de créer un constructeur. La première consiste à créer un constructeur vide. Les propriétés de l'objet Java doivent dans ce cas avoir le même nom que les noms des champs stockés dans le fichier JSON, pour que la librairie fasse la liaison. La deuxième solution est d'ajouter une annotation sur les propriétés de l'objet Java. Vous devez écrire l'instruction "@JsonProperty("nom_du_champ"). La valeur "nom_du_champ" correspond au nom présent dans le fichier JSON. Les annotations fonctionnent également avec les "Data class" du langage Kotlin. Pour vous aider, vous pouvez utiliser le site internet http://www.jsonschema2pojo.org/. Ce site permet de convertir des objets JSON dans plusieurs langages, dont Java, et est compatible avec Jackson.

Android