错误消息:
java.lang.RuntimeException:无法反序列化对象。无法将java.util.ArrayList类型的对象转换为com.example.model.Cart类型(位于字段“ cart”中)
我已经提到了许多类似的问题,并且都在使用Firebase Realtime数据库,而我在使用Firebase Firestore。
以下类是我用于数据库的类。
User.java:
public class User implements Serializable {
// Data
private String name, uid, mail, address;
private Long phone;
private ArrayList<Order> orders;
private Cart cart;
public User() {
orders = new ArrayList<>();
cart = new Cart();
}
/* Getters and Setters for all variables */
}
Cart.java:
public class Cart {
// Data
private ArrayList<SingleOrderItem> cart;
public Cart() {
cart = new ArrayList<>();
}
/* Getters and Setters for all variables */
}
SingleOrderItem.java:
public class SingleOrderItem {
// Data
private Product product;
private int quantity;
private Long cost;
/* Getters and Setters for all variables */
}
Product.java:
public abstract class Product {
// Data
private String id, name, picUrl;
private Long price;
/* Getters and Setters for all variables */
}
向Firebase Firestore添加数据:
// Initialize Firebase variables
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
// Fetch item details from activity
SingleOrderItem singleOrderItem = new SingleOrderItem();
singleOrderItem.setProduct(sweet);
singleOrderItem.setQuantity(1);
singleOrderItem.setCost(sweet.getPrice());
// Get cart from user
Cart cart = user.getCart();
if (cart == null) {
cart = new Cart();
}
ArrayList<SingleOrderItem> cartProducts = cart.getCart();
cartProducts.add(singleOrderItem);
cart.setCart(cartProducts);
// Update cart to user
firebaseFirestore.collection("users").document(firebaseUser.getUid())
.set(cart, SetOptions.merge());
从Firebase Firestore检索数据:
// Initialize firebase variables
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
if (firebaseUser != null) {
// Fetch data from firestore
firebaseFirestore.collection("users").document(firebaseUser.getUid())
.addSnapshotListener((documentSnapshot, e) -> {
if (documentSnapshot != null) {
// Save fetched data
User user = documentSnapshot.toObject(User.class);
userMutableLiveData.setValue(user);
}
});
}
我在此特定行中收到上述错误消息:
用户用户= documentSnapshot.toObject(User.class);
从Firebase Firestore检索数据时。
我正在尝试做的事情: 我正在创建一个电子商务应用,当用户单击任何产品上的添加到购物车按钮时,我想将其添加到Firebase firestore中的用户购物车中。
注意:
在ViewModel
中实现了数据检索。