ClassMapper:aBooleanType没有setter/field

gun*_*ess 3 android gson kotlin firebase

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

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

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

我试过@SerializedName("isProcessed")但没有运气.

Bak*_*aii 6

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

当您拥有一个名为的属性时isProcessed,Firebase要求您具有名为getIsProcessed()/的getter/setter setIsProcessed().但是,is在Kotlin中以属性开头时,将应用不同的命名规则.它genarates命名的getter/setter isProcessed()/ setProcessed(),根据科特林文档:

如果该属性的名称开头is,不同的名称的映射规则用于:吸气剂的名称将是相同的属性名称,以及设置器的名称将通过替换来获得isset.例如,对于属性isOpen,将调用getter并调用isOpen()setter setOpen().此规则适用于任何类型的属性,而不仅仅是Boolean.