Firebase 为什么Kotlin数据类类型在写入Firestore文档时会更改值名?

Firebase 为什么Kotlin数据类类型在写入Firestore文档时会更改值名?,firebase,kotlin,google-cloud-firestore,boolean,Firebase,Kotlin,Google Cloud Firestore,Boolean,我在将Kotlin数据类对象写入CloudFireStore上的文档时遇到了一个问题。在我假设这是某种bug之前,我想问一下这是否是预期的行为 我有一个数据类,比如 data class Notification( val createdAt: Timestamp?, val isDismissed: Boolean?, val text: String? ) 我将其直接添加到Firestore,如: docRef?.add(notification) 但写入Fire

我在将Kotlin数据类对象写入CloudFireStore上的文档时遇到了一个问题。在我假设这是某种bug之前,我想问一下这是否是预期的行为

我有一个数据类,比如

data class Notification(
    val createdAt: Timestamp?,
    val isDismissed: Boolean?,
    val text: String?
)
我将其直接添加到Firestore,如:

docRef?.add(notification)
但写入Firestore控制台的文档如下:

    createdAt: month number, 2020 at time AM/PM UTC+8
    dismissed: false
    text: "My text."

写入Firestore时,是什么导致布尔值从
isDismissed
更改为
dismissed

这与JavaBeans访问器方法的命名约定有关。对于Kotlin,类属性实际上是通过单独的getter和setter方法实现的。当查看类的代码试图确定底层JavaBeans属性的名称时,它将从方法名称中去掉“get”、“has”和“is”,然后降低下一个字母的大小写。这就是FireStoreSDK所做的


如果您不希望使用默认行为将访问器方法的名称映射到文档属性的名称,您可以使用键/值对自己编写一个
映射,或者。

它与JavaBeans访问器方法的命名约定有关。对于Kotlin,类属性实际上是通过单独的getter和setter方法实现的。当查看类的代码试图确定底层JavaBeans属性的名称时,它将从方法名称中去掉“get”、“has”和“is”,然后降低下一个字母的大小写。这就是FireStoreSDK所做的

如果您不希望使用默认行为将访问器方法的名称映射到文档属性的名称,您可以使用键/值对自行编写
映射,或者