【发布时间】:2016-10-30 19:26:38
【问题描述】:
我是 Firebase 的新手,面临以下问题:
我将一个对象(Bill)上传到我的 Firebase,其中一个属性是 ArrayList。它适用于上传。
但是当我检索数据时,由于 ArrayList 而出现错误
com.firebase.client.FirebaseException: Failed to bounce to type
主要活动:
Firebase billRef = new Firebase(getResources().getString(R.string.FB_billRef));
Query billQuery = billRef.orderByChild("status").equalTo("Ordered");
billQuery.addChildEventListener(
new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Bill bill = dataSnapshot.getValue(Bill.class);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
}
);
Bill.class:
public class Bill {
private int billID;
private int tableID;
private int numCustomer;
private String status;
private ArrayList<Order> orders;
public Bill(int billID, int tableID, int numCustomer,String status,ArrayList<Order> orders){
this.billID = billID;
this.tableID = tableID;
this.numCustomer = numCustomer;
this.status = status;
this.orders = orders;
}
public ArrayList<Order> getOrders() {
return orders;
}
public void setOrders(ArrayList<Order> orders){
this.orders = orders;
}
public void addOrder(Order o){}
public void delOrder(int orderID){}
public int getBillID(){return billID;}
public int getTableID(){return tableID;}
public int getNumCustomer(){return numCustomer;}
public String getStatus(){return status;}
}
如何将这种类型的 firebase 对象检索到 java 对象? 非常感谢!
我必须处理的唯一方法是一一分解 DataSnapshot 属性并使用 datasnapshot.child("orders").getChildren()
但这不是一个好方法。有什么方法可以直接获取账单对象吗?
【问题讨论】:
-
你试过用
List代替ArrayList吗? -
在您的 logcat 中,在该错误消息下,将有一个堆栈跟踪。在该堆栈跟踪中,它将指定问题的实际原因(通常在
Caused by之后)。 -
尝试向
Bill添加一个无参数构造函数。 -
Re adolfosrs:我做了,但出现了同样的错误。
-
@FrankvanPuffelen 该错误是由 ArrayList 命令引起的。以下是错误:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token at [Source: java.io.StringReader@1d5e2d2; line: 1, column: 32] (through reference chain: com.test.Class.Bill["orders"])
标签: android arraylist firebase firebase-realtime-database