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

10-07 19:34
查看更多