Firebase Firestore:是否有@SerializedName的等价物?

时间:2018-04-19 16:22:30

标签: firebase kotlin google-cloud-firestore

我使用Firestore(来自Firebase)。出于某种原因,我不理解我的一个类的变量没有以正确的名称保存(在Firestore中)。

以下是一个示例类:

data class ExampleClass(
        val id: String,
        val foo: String,
        val bar: String,
        val isEnabled: Bool)

当我在Firestore中保存此对象时,我对idfoobar没有任何问题。但是,isEnabled会另存为enabledis被移除,我没有任何理由。

你们其中一个人知道这是否正常?我想将值保存为isEnabled而不是enabled

此外,是否可以指定"名称"在Firestore中使用每个值?因此我可以强制将该值保存为" isEnabled"。我见过@PropertyName(Firebase doc),但它似乎没有我期望的效果。

提前致谢

1 个答案:

答案 0 :(得分:0)

这是正常的,直观的。这是JavaBean类型对象被序列化的方式。根据{{​​3}}部分8.3.2布尔属性忽略布尔getter的方法名称上的“is”:

  

布尔属性

     

另外,对于布尔属性,我们允许a   getter方法匹配模式:

     

public boolean is();

     

可以提供此“isPropertyName”方法而不是a   “get”方法,或者除了a之外还可以提供   “得到”方法。在任何一种情况下,如果是   方法存在于布尔属性然后我们将使用   “是”方法来读取属性值。一个例子   布尔属性可能是:

     

public boolean isMarsupial();

     

public void setMarsupial(boolean m);

在我看来,在布尔值上加上“is”前缀是多余的。如果你知道一个属性是一个布尔值,那么暗示它隐含地“是”或“不是”它的名字。

但如果你真的必须更改名称,你可以使用JavaBeans specification注释:

data class ExampleClass(
    val id: String,
    val foo: String,
    val bar: String,
    @PropertyName(value="isEnabled")
    val isEnabled: Bool
)
相关问题