ClassMapper:aBooleanType没有设置者/字段

我正在使用firebase,这是我的数据类定义:

data class ClaimOrder(val address: String? = null, val amount: Long = 0L, val isProcessed: Boolean = false, val onCreate: kotlin.Any? = ServerValue.TIMESTAMP) 

但是在日志中,我看到下面的警告: W/ClassMapper: No setter/field for isProcessed found on class com.guness.bitfarm.service.models.ClaimOrder

我曾尝试@SerializedName("isProcessed")但没有运气。

我找不到任何来自Firebase的关于getter和setter命名规则的官方文档,但似乎他们正在寻找类似于JavaBean的getters / setter

当您拥有一个名为isProcessed的属性时,Firebase要求您具有名为getIsProcessed() / setIsProcessed() getter / setter。 但是,当属性开始于Kotlin时,将应用不同的命名规则。 它根据Kotlin doc的规定 , setProcessed()名为isProcessed() / setProcessed() getter / setter:

如果属性的名称以is开头, is使用不同的名称映射规则:getter的名称将与属性名称相同,并且setter的名称将通过替换set来获得。 例如,对于属性isOpen ,getter将被称为isOpen() ,setter将被称为setOpen() 。 这个规则适用于任何类型的属性,而不仅仅是Boolean

我不知道确切的原因,但这是我的猜测:

变量名称isProcessed会导致生成不同的访问器方法,因此基础gsonkotlin方法不匹配。

然而使用刚processed似乎很好地解决了问题。