作者:娜一刻冻杰幸福 | 来源:互联网 | 2022-10-10 17:40
我有使用Moshi 1.8.0进行数据序列化/反序列化的工作代码
现在,升级到1.9.1会导致尝试序列化时崩溃:
java.lang.IllegalArgumentException:无法序列化Kotlin类型com.xxx.Spot。不使用kotlin-reflect的Kotlin类的反射序列化具有未定义和意外的行为。请使用moshi-kotlin构件中的KotlinJsonAdapter或使用moshi-kotlin-codegen构件中的代码gen。
这是序列化器代码:
val moshi = Moshi.Builder().build()
val dataListType = newParameterizedType(List::class.java, T::class.java)
val adapter: JsonAdapter> = 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
)
我完全不知道在这里做什么。
谢谢您的帮助!
1> 小智..:
您需要在数据类之前添加@JsonClass(generateAdapter = true)
@JsonClass(generateAdapter = true)
data class Spot(
var id: String = "",
var localizedName: String? = null,
var type: String = "",
var location: Location? = null
)
...并在您的构建中包含相应的kapt配置。此处的详细信息:https://github.com/square/moshi/blob/master/README.md#kotlin
为什么需要那?