我想知道 Firebase 如何将 POJO 对象序列化/反序列化为 json,它是否使用 Jackson 或 Gson 或其他任何类似的库。
我对 Firebase 的命名约定有疑问。我的模型有些像这样:
class Data {
private String someFieldName;
private String anotherFieldName;
public Data() {}
public void setSomeFieldName(String) {...}
public String getSomeFieldName(String) {...}
public void setAnotherFieldName(String) {...}
public String getAnotherFieldName() {...}
}
Firebase 中的预期结果应该是:
{
"some_field_name" : "...",
"another_field_name" : "..."
}
使用 Gson 我可以使用 FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES
来实现我的目的,如 Gson 文档中所示:
Here's a few examples of the form "Java Field Name" ---> "JSON Field Name":
someFieldName ---> some_field_name
_someFieldName ---> _some_field_name
aStringField ---> a_string_field
aURL ---> a_u_r_l
如何将我的 POJO 对象转换为具有特定命名约定的“Firebase 值”,反之亦然,或者有什么方法可以自定义序列化/反序列化过程?
谢谢!
最佳答案
当从 Firebase 数据库中读回数据时,您可以使用 @PropertyName
注解来标记一个字段,以便在序列化/反序列化时重命名,如下所示:
@IgnoreExtraProperties
class Data {
@PropertyName("some_field_name")
public String someFieldName
@PropertyName("another_field_name")
private String anotherFieldName;
public Data() {}
}
确保您的字段是公共(public)的而不是私有(private)的,否则注释将不起作用(我也相信 Firebase 使用 Jackson 来处理引擎盖下的对象映射,但不要认为您实际上可以自定义它的使用方式).
关于android - Firebase 序列化/反序列化的命名约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40690641/