Mam działający kod serializujący / deserializujący dane za pomocą Moshi 1.8.0
Aktualizacja do wersji 1.9.1 prowadzi teraz do awarii podczas próby serializacji:
java.lang.IllegalArgumentException: Nie można serializować typu Kotlin com.xxx.Spot. Serial refleksyjny klas Kotlin bez użycia kotlin-reflect ma nieokreślone i nieoczekiwane zachowanie. Użyj KotlinJsonAdapter z artefaktu moshi-kotlin lub użyj kodu gen z artefaktu moshi-kotlin-codegen.
Oto kod serializatora:
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)
a odpowiednia klasa T to
@IgnoreExtraProperties
data class Spot(
var id: String = "",
var localizedName: String? = null,
var type: String = "",
var location: Location? = null
)
Nie mam pojęcia, co tu robić.
Dzięki za pomoc!
Odpowiedzi:
Musisz dodać @JsonClass (generateAdapter = true) przed klasą danych
źródło
Możesz stłumić dzikie karty za pomocą
@JvmSuppressWildcards
.lubię to
źródło