ClassMapper: нет setter / field для 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-подобные геттеры / сеттеры

Когда у вас есть свойство с именем isProcessed , Firebase требует, чтобы у вас был getter / setter с именем getIsProcessed() / setIsProcessed() . Однако при запуске свойства в Kotlin применяется другое правило именования. Он расшифровывает getter / setter с именем isProcessed() / setProcessed() , согласно документу Kotlin :

Если имя свойства начинается с, используется другое правило сопоставления имен: имя получателя будет таким же, как имя свойства, и имя установщика будет получено путем замены с помощью set . Например, для свойства isOpen геттер будет называться isOpen() а сеттер будет называться setOpen() . Это правило применяется к свойствам любого типа, а не только к Boolean .

Я не знаю точной причины, но здесь я догадываюсь:

имя переменной isProcessed вызывает разные методы доступа, поэтому базовые gson и kotlin не совпадают.

однако использование только что processed похоже, хорошо исправить.