java - Firebase 中的 getValue() 方法是什么?
问题描述
我正在使用 Firebase 在 android 中编写应用程序。我也是 Java 新手,最近我遇到了 Firebase 文档示例代码 (Java) 中提到的这段代码。
Post post = dataSnapshot.getValue(Post.class);
我知道 Post 是一个普通的旧 Java 对象 (POJO),但我没有得到另一段代码(在右侧)。它与Java中的序列化有关还是什么?一个例子将是一个很大的帮助。提前致谢。
解决方案
如果您使用以下代码行:
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") 调用,这意味着您仅从id
JSON 获取属性的值。
推荐阅读
- angular - 如何使用 nth-child 点击一个
- 所有的
- s 在量角器/角度测试中有相同的类吗?
- ios - 如何仅在使用 Swift 移动地图时显示中心按钮?
- arrays - 输入未知大小的数组
- gradle - 无法创建任务“:GluonApplicationApp:调试”
- android-studio - Android Studio bug
- r - 使用 gganimate 制作动画:我没有做对
- excel - 如何抓取 div.address 文本?
- tensorflow - Object Detection API for TF2 中的量化模型
- proof - 类型的定义在 agda 中不起作用
- docker - docker 图像是否共享相同的层?