使用嵌套映射将文档对象(documentSnapshot)火存储到POJO



我试图序列化的firestore文档包含一个字符串映射图,如下所示:

我收藏的一些示例文档:

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"    

我在创建匹配的POJO类时遇到的问题是,内部映射的字段名不是恒定的,因为我的vouchers Map中的凭证数量会不时变化。

对于具有未知自定义ID的documents,有一个解决方案(注释@DocumentId(

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

我最近的失败尝试:

public class MyPOJO {
public MyPOJO() {
}
public String id;
public VouchersPOJO vouchers;
}
public class VouchersPOJO {
public VouchersPOJO() {
}
public List<ActualVoucherPOJO> vouchers;  
}
public class ActualVoucherPOJO {
public ActualVoucherPOJO() {
}
public String name, description;
}
MyPOJO x = documentSnapshot.toObject(MyPOJO.class);

正如您已经说过的voucherMap,所以这也是您应该在Java类中使用的:

public class MyPOJO {
public String id;
public Map<String,Voucher> vouchers;
}
public class Voucher {
public String name, description;
}

在这种情况下,我认为toObject()不会处理整个数据结构。它不是用来处理动态/可变数据的。相反,您将不得不手动:

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

相关内容

  • 没有找到相关文章

最新更新