Android Moshi在Kotlin惰性属性上失败
当使用Moshi反序列化类时,它会通过lazy属性在Android Moshi在Kotlin惰性属性上失败,android,kotlin,moshi,Android,Kotlin,Moshi,当使用Moshi反序列化类时,它会通过lazy属性在上失败,错误为: IllegalArgumentException: No JsonAdapter for interface kotlin.Lazy annotated [] 所以我想告诉Moshi忽略这个属性。忽略这一点的方法显然是使用@Transient,但它只能用于字段,而不能用于属性 那么,如何在使用Moshi反序列化时忽略Kotlin惰性属性呢?您可以对委托本身进行注释: class Foo { @delegate:Tra
上失败,错误为:
IllegalArgumentException: No JsonAdapter for interface kotlin.Lazy annotated []
所以我想告诉Moshi忽略这个属性。忽略这一点的方法显然是使用@Transient
,但它只能用于字段,而不能用于属性
那么,如何在使用Moshi反序列化时忽略Kotlin惰性属性呢?您可以对委托本身进行注释:
class Foo {
@delegate:Transient
val bar by lazy { true }
}
谢谢虽然这确实有效,但事实证明,由于没有无参数构造函数,当由Moshi(NullPointerException)反序列化时,延迟属性没有初始化还有另一个问题。但这是另一个问题。@GregEnnis你有没有想过如何在反序列化过程中初始化Moshi实例化的类中的委托属性?我不这么认为。我真的希望Moshi使用的不是瞬态的东西,瞬态还有很多其他含义。如果这仍然是一个问题,请在构建适配器时将KotlinJsonAdapterFactory添加到Moshi builder:Moshi.builder().add(KotlinJsonAdapterFactory()).build().adapter(MyClass::class.java)