在 java 类中为 firestore 文档指定序列化名称
Posted
技术标签:
【中文标题】在 java 类中为 firestore 文档指定序列化名称【英文标题】:Specifying serialized names in java class for firestore document 【发布时间】:2018-12-27 07:15:02 【问题描述】:我正在尝试使用custom object 将document
存储在我的android 应用程序的firestore 中。如果我使用 proguard 来构建我的应用程序,有没有办法像 Gson
使用 @SerializedName
注释提供的那样为我的类中的字段指定序列化名称?
【问题讨论】:
【参考方案1】:您可以使用PropertyName 注释指定Java 属性在文档的JSON 中获取的名称。例如:
public class Data
@PropertyName("some_field_name")
public String someFieldName;
如果您使用 getter 和 setter(而不是像上面那样使用公共字段),请务必将注解放在 getter 和 setter 上:
public class Data
private String someFieldName;
@PropertyName("some_field_name")
public String getSomeFieldName() return someFieldName;
@PropertyName("some_field_name")
public void setSomeFieldName(String someFieldName) this.someFieldName = someFieldName;
此注释在 Cloud Firestore 和旧版 Firebase 实时数据库之间共享,因此我建议您同时查看一些 previous questions about PropertyName
,例如 Naming convention with Firebase serialization/deserialization?。
【讨论】:
如果我在将数据保存到 Firestore 时需要相同的功能怎么办。我在 java 中的字段名称称为xyzSomethings
。但我希望它保存为somethings
。有办法吗?
Firestore 存在完全相同的注释:firebase.google.com/docs/reference/android/com/google/firebase/…
感谢您的回复。我试过这个。这行不通。它在从 Firestore 读取值时起作用。将数据保存到 Firestore 时不会
在这种情况下,请使用minimal, complete/standalone code with which anyone can reproduce the problem 提出一个新问题。
问题是 @PropertyName
在 provate 字段上不起作用。它在将注释放在公共 getter 和 setter 上时起作用。这个问题有一些关于它的信息***.com/questions/38681260/…。谢谢以上是关于在 java 类中为 firestore 文档指定序列化名称的主要内容,如果未能解决你的问题,请参考以下文章
在 Google BigQuery 中插入/更新 Firestore 文档导出
如何在firebase-flutter中为快照数据指定字段[重复]