【发布时间】:2017-07-25 14:24:11
【问题描述】:
我创建了一个对象来向 firebase 发送一些数据。例如,我使用 firebase 用户示例:
public class User {
public String username;
public String email;
public User() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public User(String username, String email) {
this.username = username;
this.email = email;
}
}
我想对发送到 firebase 的属性名称进行编码。目前,密钥是使用变量名发送的。我想对Useraname 和Email 之类的键进行编码,就像Gson 正在做的那样。我不想更改变量名。
@SerializateName("Username")
public String username;
@SerializateName("Username")
public String email;
我使用了@SerializateName(),但无法正常工作。与 Firebse 使用的 @PropertyName 相同,但无法正常工作。我可以使用什么来序列化自定义键?
更新 1
public class Pojo {
@PropertyName("Guid")
public String guid;
@PropertyName("Name")
public String name;
public String getPojoGuid() {
return guid;
}
public void setPojoGuid(String guid) {
this.guid = guid;
}
}
如图所示,它根据变量名保存键。我从一个字段的注释中更改了属性名称,当我保存它时,它会忽略它,但是当我更改变量名称时,它会保存为带有该新变量名称的键的新条目。
在this 文档中是一个方法toMap()。如果我这样做,则可以工作(对我来说不方便),但不能使用@PropertyName。
更新 2
如果我用@Exclude 标记getter 和setter 并且用@IgnoreExtraProperties 标记类正在工作。我不必使用文档中的toMap() 方法示例。正在使用来自 @PropertyName 的指定名称。在我看来不是一件好事,制造混乱。
【问题讨论】:
-
@PropertyName 适用于我的 SDK 版本 11.0.2。你用的是什么版本?
-
请分享在您使用
PropertyName注释序列化/反序列化 POJO 时重现问题的最少代码。 -
@FrankvanPuffelen 我更新了我的问题。够了吗?
-
你能帮我解决这个question吗?
标签: android firebase firebase-realtime-database