【问题标题】:What is getValue() method in Firebase?Firebase 中的 getValue() 方法是什么?
【发布时间】:2018-08-15 08:05:47
【问题描述】:
我正在使用 Firebase 在 android 中编写应用程序。我也是 Java 新手,最近我遇到了 Firebase 文档示例代码 (Java) 中提到的这段代码。
Post post = dataSnapshot.getValue(Post.class);
我知道 Post 是一个普通的旧 Java 对象 (POJO),但我没有得到另一段代码(在右侧)。它与Java中的序列化有关还是什么?一个例子将是一个很大的帮助。提前致谢。
【问题讨论】:
标签:
java
android
firebase
firebase-realtime-database
【解决方案1】:
如果您使用以下代码行:
Post post = dataSnapshot.getValue(Post.class);
这意味着您正在使用 Java 包装类来添加和读取 Firebase 数据库中的数据。这也意味着您可以通过直接调用公共字段或使用公共 getter(如果您的文件被声明为私有字段)来获取 POJO 类中声明的字段的值。
Firebase 数据库中的每个节点都是一个 Map,您还可以从该特定节点获取数据,也可以是 Map,如下所示:
Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
这样你就可以遍历地图并获取键和值。
以更方便的方式,如果不想使用像 Post 类这样的 Java 包装类,您也可以直接从 DataSnapshot 对象访问属性。因此,假设您的数据库中有一个名为 id 的属性,要获取该属性的值,您可以像这样简单地使用 String 类:
String id = dataSnapshot.child("id").getValue(String.class);
不同之处在于添加了 child("id") 调用,这意味着您只能从 JSON 中获取 id 属性的值。