我正在使用Firebase在android中编写应用程序。我也是Java的新手,最近遇到了这段代码,Firebase文档示例代码(Java)中也提到了这一段代码。
Post post = dataSnapshot.getValue(Post.class);
我知道Post是一个普通的Java对象(POJO),但是我没有得到另一段代码(在右侧)。它与Java中的序列化有关吗?一个例子将是一个很大的帮助。提前致谢。
答案 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
属性的值。