Android Moshi在Kotlin惰性属性上失败

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

当使用Moshi反序列化类时,它会通过lazy属性在
上失败,错误为:

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)