我正在使用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