ฉันมีรหัสการทำงานที่เป็นอนุกรมข้อมูล / deserializing ใช้ Moshi 1.8.0
การอัปเกรดเป็น 1.9.1 จะนำไปสู่ข้อขัดข้องเมื่อพยายามทำให้เป็นอันดับ:
java.lang.IllegalArgumentException: ไม่สามารถทำให้เป็นอนุกรมชนิด Kotlin com.xxx.Spot การสะท้อนลำดับของคลาส Kotlin โดยไม่ใช้ kotlin-reflect นั้นมีพฤติกรรมที่ไม่ได้กำหนดและไม่คาดคิด กรุณาใช้ KotlinJsonAdapter จากสิ่งประดิษฐ์ moshi-kotlin หรือใช้รหัส gen จากสิ่งประดิษฐ์ moshi-kotlin-codegen
นี่คือรหัส 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)
และคลาส T ที่สอดคล้องกันคือ
@IgnoreExtraProperties
data class Spot(
var id: String = "",
var localizedName: String? = null,
var type: String = "",
var location: Location? = null
)
ฉันไม่รู้จะทำอะไรที่นี่
ขอบคุณสำหรับความช่วยเหลือ!
แสดงการพึ่งพาที่คุณใช้
—
coroutineDispatcher