使用嵌套映射将Firestore文档对象(documentSnapshot)转换为POJO

时间:2020-05-09 21:36:34

标签: android serialization google-cloud-firestore pojo

我要序列化的firestore文档包含这样的字符串映射图:

收藏夹中的一些示例文档:

   if userResponse == b'OK':
        with open(filename, 'rb') as f:
            bytesToSend = f.read(1024)
            sock.send(bytesToSend)
            while bytesToSend != "":
                bytesToSend = f.read(1024)
                sock.send(bytesToSend)

创建匹配的POJO类时遇到的问题是内部映射的字段名称不是恒定的,因为id: "someId1" (String) vouchers (Map) voucher_with_some_random_id_1 (Map) name: "name 1" description: "description 1" voucher_with_some_random_id_2 (Map) name: "name 2" description: "description 2" 中凭证的数量会不时变化。

对于具有未知自定义ID的vouchers Map,有一个solution(注释documents

但是我找不到适用于地图的注释。

我最近的失败尝试:

@DocumentId

2 个答案:

答案 0 :(得分:0)

在这种情况下,我认为toObject()不适用于整个数据结构。它并不用于处理动态/可变数据。相反,您将必须手动:

  1. 迭代从快照返回的Maps条目
  2. 将每个地图转换为单个对象
  3. 使用在地图中找到的内容组装最终的MyPOJO对象

答案 1 :(得分:0)

您已经说过voucherMap,因此您也应该在Java类中使用它:

public class MyPOJO {

    public String id;
    public Map<String,Voucher> vouchers;

}

public class Voucher {

    public String name, description;

}