java - 有没有办法将自定义对象列表放在 cloud-firestore 中的自定义对象中
问题描述
我正在使用 cloud firestore 为一个大学项目开发一个 android 应用程序,我想知道是否可以在文档中包含一个字段作为自定义对象的数组(该文档本身也是一个自定义对象)我认为它是某种的嵌套。
我已经能够使用自定义对象(收据)。我有一个表示 Artciles 的字符串数组列表。目前,那些格式化的字符串让我可以解析它并读取文章的价格、金额和名称,但将来我可能需要添加更多数据。我考虑过使用子集合,但我需要能够直接下载整个文档。
public class Ticket{
// TICKET DATA
private Date date;
private double cashIn;
...
// ARTICLES LIST DATA
private ArrayList<String> basket;//What I want to change
public Ticket(){
// EMPTY CONSTRUCTOR NEEDED
}
//With other constructors, setters and getters and parsing code
如果我将 ArrayList 中的类型替换为自定义对象类型,则会收到此错误:
Could not deserialize object. Can't convert object of type java.lang.String to type com.ereceipt.e_receipt.Objects.Article (found in field 'basket.[0]')
我在点击回调中使用这个从firebase到java对象的“转换”:
DocumentSnapshot documentSnapshot = // Some query (kind of big, you might not need it)
Ticket ticket = documentSnapshot.toObject(Ticket.class);
这是当前的 Article 类,稍后将针对未来的功能进行升级:
public class Article{
private String name;
private int amount;
private double unitprice;
public Article(){
}
...
}
我的数据库仅由一个称为收据的集合组成,文档如下:
receipt/basket (an array)
receipt/basket[0]/name (String)
receipt/basket[0]/amount (number)
receipt/basket[0]/unitprice (number)
receipt/cashIn (number)
receipt/store/name (String)
receipt/store/address (String)
receipt/store/message (String)
receipt/timestamp
解决方案
推荐阅读
- activemq-artemis - 消息负载平衡的客户端配置
- python - 连接字符串中的 PYODBC 传递变量
- java - 在对象数组上流式传输并收集以将键作为属性和对象作为值进行映射
- java - 使用桶排序对数组进行排序
- javascript - 单击日历外部时使反应日期选择器运行
- elasticsearch - 在过滤器查询弹性搜索中使用数组匹配
- ios - Flutter Web 应用程序无法在 Iphone 6 plus 的 IOS 12.5.4 上运行
- java - 在 Eclipse 上运行 cplex 的问题错误:无法初始化主类 App
- python - pandas 的累积总和,以零开头,以除最后一个条目之外的所有组的总和结尾
- python - 有人可以解释这个异常值删除功能在做什么吗?