J'ai un code de sérialisation / désérialisation de code de travail à l'aide de Moshi 1.8.0
La mise à niveau vers 1.9.1 entraîne désormais un crash lors de la tentative de sérialisation:
java.lang.IllegalArgumentException: impossible de sérialiser le type Kotlin com.xxx.Spot. La sérialisation réfléchie des classes Kotlin sans utiliser kotlin-reflect a un comportement indéfini et inattendu. Veuillez utiliser KotlinJsonAdapter de l'artefact moshi-kotlin ou utiliser le code gen de l'artefact moshi-kotlin-codegen.
Voici le code du sérialiseur:
val moshi = Moshi.Builder().build()
val dataListType = newParameterizedType(List::class.java, T::class.java)
val adapter: JsonAdapter<List<T>> = moshi.adapter(dataListType)
val json = adapter.toJson(dataList)
et la classe T correspondante est
@IgnoreExtraProperties
data class Spot(
var id: String = "",
var localizedName: String? = null,
var type: String = "",
var location: Location? = null
)
Je ne sais absolument pas quoi faire ici.
Merci pour l'aide!
Réponses:
Vous devez ajouter @JsonClass (generateAdapter = true) avant votre classe de données
la source
Vous pouvez supprimer les caractères génériques à l'aide de
@JvmSuppressWildcards
.comme ça
la source