Saya memiliki kode serialisasi / deserializing data yang berfungsi menggunakan Moshi 1.8.0
Memutakhirkan ke 1.9.1 sekarang menyebabkan kerusakan saat mencoba membuat cerita bersambung:
java.lang.IllegalArgumentException: Tidak dapat membuat serialisasi jenis Kotlin com.xxx.Spot. Serialisasi reflektif dari kelas-kelas Kotlin tanpa menggunakan kotlin-reflect memiliki perilaku yang tidak jelas dan tidak terduga. Silakan gunakan KotlinJsonAdapter dari artefak moshi-kotlin atau gunakan kode gen dari artefak moshi-kotlin-codegen.
Ini adalah kode serializer:
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)
dan kelas T yang sesuai adalah
@IgnoreExtraProperties
data class Spot(
var id: String = "",
var localizedName: String? = null,
var type: String = "",
var location: Location? = null
)
Saya sama sekali tidak tahu apa yang harus dilakukan di sini.
Terima kasih untuk bantuannya!
Jawaban:
Anda perlu menambahkan @JsonClass (menghasilkanAdapter = true) sebelum kelas data Anda
sumber
Anda dapat menekan kartu liar menggunakan
@JvmSuppressWildcards
.seperti ini
sumber