Moshi 在 Kotlin 惰性属性上失败

Gre*_*nis 3 android kotlin moshi

当使用 Moshi 反序列化一个类时,它在by lazy属性上失败并出现错误:

IllegalArgumentException: No JsonAdapter for interface kotlin.Lazy annotated []
Run Code Online (Sandbox Code Playgroud)

所以我想告诉Moshi忽略这个属性。忽略这一点的方法显然是使用@Transient但是只能在字段上使用 - 而不是属性。

那么在使用 Moshi 反序列化时如何忽略 Kotlin 惰性属性呢?

tyn*_*ynn 7

您可以注释委托本身:

class Foo {
    @delegate:Transient
    val bar by lazy { true }
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢...虽然这确实有效,但事实证明,由于没有无参数构造函数,在被 Moshi (NullPointerException) 反序列化时没有初始化的惰性属性存在另一个问题。但这是一个不同的问题。 (2认同)