Kotlin 类没有从 firebase 获取其布尔值

Posted

技术标签:

【中文标题】Kotlin 类没有从 firebase 获取其布尔值【英文标题】:Kotlin class does not get its boolean value from firebase 【发布时间】:2018-03-06 11:48:45 【问题描述】:

我的 kotlin 类为

class Center : Serializable 
var active: Boolean? = null
var address: String? = null
var isJobAccessGranted: Boolean? = null

这是我获得价值的方式

 //from java class
   @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) 
            centerMap.put(dataSnapshot.getKey(), dataSnapshot.getValue(Center.class));
        

但问题是我得到active 字段的值没有任何问题。但isJobAccessGranted 布尔字段始终保持为空。我已经测试了一些其他布尔删除 is 前缀,它工作正常。当我使用isActiveisJobAccessGranted 时,我没有得到布尔值。谁能解释我为什么会面临这个问题。 #AskFirebase

【问题讨论】:

您有一个名为 isJobAccessGranted 的属性,因此适当生成的 getter 将是 isIsJobAccessGranted。也许是问题所在? no @mike 它没有生成 isIsJobAccessGranted 不知道这背后的确切原因,但使用@field:JvmField 而不是var isJobAccessGranted: Boolean? = null 解决了我的问题 【参考方案1】:

Kotlin 中的comment 中所述,您应该为类中的每个Boolean 字段添加@field:JvmField,因为当Kotlin 转换为Java 时,它会生成setter,其名称无法被JSON 解析器解析.而@field:JvmField注解覆盖了这个特性,就会有正确的setter名称,并且会正确解析JSON。

【讨论】:

为什么这不在 Firebase Kotlin 文档的首页? @r3dm4n 现在在Firestore docs 上。感谢您的建议!

以上是关于Kotlin 类没有从 firebase 获取其布尔值的主要内容,如果未能解决你的问题,请参考以下文章

从 Firebase android kotlin 获取数据时如何显示加载的项目

如何从 Firebase.auth.currentUser Android Kotlin 获取刷新令牌

如何从 Firebase android kotlin 获取所有具有特定价值的孩子?

使用 Kotlin 的 Firebase 云消息传递 Android

如何在 Android Studio 中使用 Kotlin 从 Firebase 中的数据库中获取特定值?

使用 firebase 未显示回收站视图 - kotlin