android - 用于注释模型的 Moshi 适配器
问题描述
我目前正在使用 Moshi 适配器将一些 json raw 转换为给定类型。在我使用带注释的模型之前,它工作正常。
我猜我应该在旁边的适配器中添加另一个参数,Player::class.java
但我不知道是什么。
这是一个例子:
data class Player(
val username: String,
@Json(name = "lucky number")
val luckyNumber: Int
)
private val playerStubRaw = "{\n" +
" \"username\": \"jesse\",\n" +
" \"lucky number\": 32\n" +
"}"
@Test
fun doSomething() {
val moshi = Moshi.Builder().build()
val player = moshi.adapter(Player::class.java).fromJson(playerStubRaw)
// player.luckyNumber == 0
}
luckyNumber
值为 0 而不是 32。
知道我应该怎么做才能让它工作吗?
提前致谢,
解决方案
要使用 Kotlin,Moshi 需要反射 KotlinJsonAdapterFactory(来自 moshi-kotlin 工件)或代码生成适配器(来自 moshi-kotlin-codegen 工件)。
https://github.com/square/moshi#kotlin
在 Moshi 的未来版本中,将抛出适当的错误来说明此要求。
推荐阅读
- angularjs - 在返回时保留先前状态的数据 - Angular 1.4 UI Router
- docker - Openshift - 我可以使用 Openshift 运行 docker 客户端命令(如 docker push)吗?
- sql-server - SQL Server 其他前缀标识符
- reactjs - 如何在 InfoWindow 中显示 results[0].formatted_address
- spring - 使用 expireAfterSeconds 索引的 Spring Boot MongoDB 自动删除文档不起作用
- javascript - 将 div 类作为 jquery 参数传递并清除该类下的所有元素
- javascript - 在 for 循环内进行验证时修复复选框
- java - 有没有办法避免一个类同时实现 2 个特定接口?
- zipkin - 向 Zipkin 发送 Spring Cloud Sleuth 日志消息
- arrays - 如何从包含值的 JSON 对象中的数组中删除元素