You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase Firestore是否有@SerializedName等效方案?属性名变更问题咨询

关于Firestore Kotlin数据类字段命名与映射的问题

这是个非常常见的Firebase使用问题,我来一步步给你解答:

1. 「isEnabled字段被自动保存为enabled」是否正常?

这完全是正常现象,背后的原因是Firebase的序列化机制遵循了JavaBean的命名规范:

  • 对于布尔类型的属性,如果名称以is开头,序列化器会自动移除前缀is,并将后续的首字母转为小写(比如这里的isEnabled就变成了enabled)。
  • 这个规则是为了和Java生态的getter/setter命名习惯对齐(布尔属性的getter通常是isEnabled()而非getIsEnabled()),所以Firestore的默认序列化逻辑会做这样的转换。

2. Firestore是否有类似@SerializedName的字段映射注解?

有的!Firebase提供了@PropertyName注解,专门用来指定属性与Firestore字段的映射关系,用法和Gson的@SerializedName非常相似。

你只需要给目标字段添加这个注解,指定想要在Firestore中存储的字段名即可,修改后的示例代码如下(顺便纠正了Kotlin布尔类型的写法,应该是Boolean而非Bool):

import com.google.firebase.firestore.PropertyName

data class ExampleClass(
    val id: String,
    val foo: String,
    val bar: String,
    @PropertyName("isEnabled") val isEnabled: Boolean
)

这样当你把ExampleClass对象存入Firestore时,这个字段就会以isEnabled的名称保存,而不是被自动转为enabled。另外要注意:这个注解在读取Firestore数据映射回数据类时同样生效,Firestore会根据注解指定的字段名匹配赋值,不需要额外配置。

内容的提问来源于stack exchange,提问作者Valentin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:06:40