首页 > 解决方案 > Firestore 检索嵌套对象并转换为 POJO

问题描述

我在 Firestore 中有嵌套对象,其中我将文档绑定到登录用户的 UUID。

我可以通过转换为 Map 并在 DocumentSnapshot 上调用 getData 来获取嵌套值。然后循环遍历 Map 条目集。我通常使用 Firestore 的方法将结果转换回我的自定义对象(例如 documentSnapshot.toObject(POJO.class) 并将它们放入列表中,但是由于我将嵌套值作为 Map,我需要使用像 Jackson 或 GS​​ON 之类的东西?一旦这个循环完成,我想转换为 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 结构

标签: androidgoogle-cloud-firestore

解决方案


是的,您必须找到自己的解决方案,因为 Firestore SDK 目前不支持将单个字段映射到 Java 对象。它现在仅适用于文档的全部内容。

如果您希望 SDK 提供一种为您执行此映射的方法,请随时提交功能请求。


推荐阅读