android - Firestore 检索嵌套对象并转换为 POJO
问题描述
我在 Firestore 中有嵌套对象,其中我将文档绑定到登录用户的 UUID。
我可以通过转换为 Map 并在 DocumentSnapshot 上调用 getData 来获取嵌套值。然后循环遍历 Map 条目集。我通常使用 Firestore 的方法将结果转换回我的自定义对象(例如 documentSnapshot.toObject(POJO.class) 并将它们放入列表中,但是由于我将嵌套值作为 Map,我需要使用像 Jackson 或 GSON 之类的东西?一旦这个循环完成,我想转换为 POJO 并将每个添加到数组列表中,在本例中为 allVehices。
public ArrayList<Vehicle> getAllVehicles() {
FirebaseFirestore.getInstance().collection("vehicles")
//.whereEqualTo("vehicleUUID",FirebaseAuth.getInstance().getCurrentUser().getUid())
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (DocumentSnapshot documentSnapshot : task.getResult()) {
Map<String,Object> map = (Map<String,Object>) documentSnapshot.getData();
for (Map.Entry<String,Object> entry : map.entrySet()) {
System.out.print(entry.getKey() + "/" + entry.getValue());
}
}
}
}
});
return allVehicles;
}
解决方案
是的,您必须找到自己的解决方案,因为 Firestore SDK 目前不支持将单个字段映射到 Java 对象。它现在仅适用于文档的全部内容。
如果您希望 SDK 提供一种为您执行此映射的方法,请随时提交功能请求。
推荐阅读
- angular - 产品未在 app.component.html 中列出
- laravel - 控制器上的对象突然变成视图中的数组
- javascript - 使用 JavaScript + CSS 的 Toast 通知在登录页面上无法正常工作(node.js + express + passport + MongoDB)
- python - 使用与用户的 OneToOneField 关系使用 is_authenticated
- r - 条形图未显示每个类别
- jquery - CSS - 如果两个子 div 相互跟随,则为它们设置样式
- mysql - 使用 JOIN 或 UNION 使用来自其他 MariaDB 表的数据的复杂 INSERT 或 UPDATE MariaDB 表
- html - When i hover my icon for make it bigger, my page moving
- reactjs - 将 cors 添加到此代码段以允许所有来源
- python - 根据 Python Pandas 中列中的值计算年龄时出错?