热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Moshi1.9.1无法序列化Kotlin类型

如何解决《Moshi1.9.1无法序列化Kotlin类型》经验,为你挑选了1个好方法。

我有使用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
为什么需要那?
推荐阅读
author-avatar
娜一刻冻杰幸福
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有