我想知道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 doc中那样:如何使用特定的命名约定将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来处理内部的对象映射,但不要认为您实际上可以自定义它是如何使用它的)。