Firebase中的getValue()方法是什么?

时间:2018-08-15 08:05:48

标签: java android firebase firebase-realtime-database

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

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

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

1 个答案:

答案 0 :(得分:3)

如果您使用以下代码行:

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

这意味着您正在使用Java包装器类来添加和读取Firebase数据库中的数据。这也意味着,您可以使用对公共字段的直接调用或使用公共获取方法(如果您将文件字段声明为私有字段)来获取在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属性的值。