首页 > 解决方案 > Firebase 中的 getValue() 方法是什么?

问题描述

我正在使用 Firebase 在 android 中编写应用程序。我也是 Java 新手,最近我遇到了 Firebase 文档示例代码 (Java) 中提到的这段代码。

Post post = dataSnapshot.getValue(Post.class);

我知道 Post 是一个普通的旧 Java 对象 (POJO),但我没有得到另一段代码(在右侧)。它与Java中的序列化有关还是什么?一个例子将是一个很大的帮助。提前致谢。

标签: javaandroidfirebasefirebase-realtime-database

解决方案


如果您使用以下代码行:

Post post = dataSnapshot.getValue(Post.class);

这意味着您正在使用 Java 包装类来添加和读取 Firebase 数据库中的数据。这也意味着您可以使用直接调用公共字段或使用公共 getter(如果您的文件被声明为私有字段)来获取 POJO 类中声明的字段的值。

Firebase 数据库中的每个节点都是一个Map,您还可以从该特定节点获取数据,Map如下所示:

Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();

因此,您可以遍历地图并获取键和值。

以更方便的方式,如果不想像您的类那样使用 Java 包装器类Post,您也可以直接从DataSnapshot对象访问属性。因此,假设您的数据库中有一个名为 的属性id,要获取此属性的值,您可以简单地使用 String 类,如下所示:

String id = dataSnapshot.child("id").getValue(String.class);

不同之处在于添加了 child("id") 调用,这意味着您仅从idJSON 获取属性的值。


推荐阅读