android - 处理一个包含多个列表和其他原语的对象(反序列化时需要一个列表,但得到了一个类 java.util.HashMap)
问题描述
我的对象有多个 ArrayLists 和原语。检索时,我收到此错误 Expected a List while deserializing, but got a class java.util.HashMap 。
我知道我收到此错误是因为 Firebase 就是这样存储它的。我只是从未在这么多领域工作过。
我的问题是我可以直接将它转换为我的对象吗?malhobayyeb 在这里指出了这一点https://stackoverflow.com/a/35979715/9860553这似乎与我的情况非常接近,但他建议的答案不起作用
我也在附加我的对象结构。
虽然我认为不需要代码。问题只是“在firebase中,如果列表在另一个对象内,如何处理数据”
package com.example.desktop.digitlbc.Model;
import java.util.ArrayList;
public class BusinessData {
private String
tvbAbout,
tvbProduct,tvbNews,tvbTrends,tvbOffers,
tvbEvents,
tvbCarrers;
private ArrayList<ImageData> idAlImageDataGallery;
private ArrayList<ImageData> idAlImageDataDocGallery;
private ArrayList<ImageData> idAlImageDataPersGallery;
private ArrayList<ImageData> idAlImageDataBizGallery;
private ArrayList<ImageData> idAlProduct;
private ArrayList<ImageData> idAlNews;
private ArrayList<ImageData> idAlTrends;
private ArrayList<ImageData> idAlOffers;
private String id;
private long timestamp;
private ArrayList<Product> product;
public BusinessData() {
}
public BusinessData(String tvbAbout, String tvbProduct, String tvbNews, String tvbTrends, String tvbOffers, String tvbEvents, String tvbCarrers, ArrayList<ImageData> idAlImageDataGallery, ArrayList<ImageData> idAlImageDataDocGallery, ArrayList<ImageData> idAlImageDataPersGallery, ArrayList<ImageData> idAlImageDataBizGallery, ArrayList<ImageData> idAlProduct, ArrayList<ImageData> idAlNews, ArrayList<ImageData> idAlTrends, ArrayList<ImageData> idAlOffers, String id, long timestamp, ArrayList<Product> product) {
this.tvbAbout = tvbAbout;
this.tvbProduct = tvbProduct;
this.tvbNews = tvbNews;
this.tvbTrends = tvbTrends;
this.tvbOffers = tvbOffers;
this.tvbEvents = tvbEvents;
this.tvbCarrers = tvbCarrers;
this.idAlImageDataGallery = idAlImageDataGallery;
this.idAlImageDataDocGallery = idAlImageDataDocGallery;
this.idAlImageDataPersGallery = idAlImageDataPersGallery;
this.idAlImageDataBizGallery = idAlImageDataBizGallery;
this.idAlProduct = idAlProduct;
this.idAlNews = idAlNews;
this.idAlTrends = idAlTrends;
this.idAlOffers = idAlOffers;
this.id = id;
this.timestamp = timestamp;
this.product = product;
}
public ArrayList<Product> getProduct() {
return product;
}
public void setProduct(ArrayList<Product> product) {
this.product = product;
}
public String getTvbAbout() {
return tvbAbout;
}
public void setTvbAbout(String tvbAbout) {
this.tvbAbout = tvbAbout;
}
public String getTvbProduct() {
return tvbProduct;
}
public void setTvbProduct(String tvbProduct) {
this.tvbProduct = tvbProduct;
}
public String getTvbNews() {
return tvbNews;
}
public void setTvbNews(String tvbNews) {
this.tvbNews = tvbNews;
}
public String getTvbTrends() {
return tvbTrends;
}
public void setTvbTrends(String tvbTrends) {
this.tvbTrends = tvbTrends;
}
public String getTvbOffers() {
return tvbOffers;
}
public void setTvbOffers(String tvbOffers) {
this.tvbOffers = tvbOffers;
}
public String getTvbEvents() {
return tvbEvents;
}
public void setTvbEvents(String tvbEvents) {
this.tvbEvents = tvbEvents;
}
public String getTvbCarrers() {
return tvbCarrers;
}
public void setTvbCarrers(String tvbCarrers) {
this.tvbCarrers = tvbCarrers;
}
public ArrayList<ImageData> getIdAlImageDataGallery() {
return idAlImageDataGallery;
}
public void setIdAlImageDataGallery(ArrayList<ImageData> idAlImageDataGallery) {
this.idAlImageDataGallery = idAlImageDataGallery;
}
public ArrayList<ImageData> getIdAlImageDataDocGallery() {
return idAlImageDataDocGallery;
}
public void setIdAlImageDataDocGallery(ArrayList<ImageData> idAlImageDataDocGallery) {
this.idAlImageDataDocGallery = idAlImageDataDocGallery;
}
public ArrayList<ImageData> getIdAlImageDataPersGallery() {
return idAlImageDataPersGallery;
}
public void setIdAlImageDataPersGallery(ArrayList<ImageData> idAlImageDataPersGallery) {
this.idAlImageDataPersGallery = idAlImageDataPersGallery;
}
public ArrayList<ImageData> getIdAlImageDataBizGallery() {
return idAlImageDataBizGallery;
}
public void setIdAlImageDataBizGallery(ArrayList<ImageData> idAlImageDataBizGallery) {
this.idAlImageDataBizGallery = idAlImageDataBizGallery;
}
public ArrayList<ImageData> getIdAlProduct() {
return idAlProduct;
}
public void setIdAlProduct(ArrayList<ImageData> idAlProduct) {
this.idAlProduct = idAlProduct;
}
public ArrayList<ImageData> getIdAlNews() {
return idAlNews;
}
public void setIdAlNews(ArrayList<ImageData> idAlNews) {
this.idAlNews = idAlNews;
}
public ArrayList<ImageData> getIdAlTrends() {
return idAlTrends;
}
public void setIdAlTrends(ArrayList<ImageData> idAlTrends) {
this.idAlTrends = idAlTrends;
}
public ArrayList<ImageData> getIdAlOffers() {
return idAlOffers;
}
public void setIdAlOffers(ArrayList<ImageData> idAlOffers) {
this.idAlOffers = idAlOffers;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public long getTimestamp() {
return timestamp;
}
public void setTimestamp(long timestamp) {
this.timestamp = timestamp;
}
}
编辑 1
现在代码已更改。使用上面链接中的答案,我已经以一种非常原始的方式实现了我现在想要的。但这使得代码对未来的更新毫无用处。
我的原始代码是一个简单的 valueEventListener。真的没什么特别的。什么都没有。
businessData = dataSnapshot.getValue(BusinessData.class);
参考也指向正确的位置
mRef = database.getReference(Common.id).child("bizData");
解决方案
推荐阅读
- java - 我可以模拟方法内部的 file.mkdirs()
- html - 为什么当线程组结束其执行时,我会看到响应时间出现峰值?
- go - fmt.Println 必须在 Go 中的函数内吗?
- java - 使用 gzip 格式的缓冲区解压缩图像失败
- drupal - 是否可以在 Drupal 的 advagg 模块中添加自定义 cdn 模块?
- javascript - 在日期选择器上键入后如何验证日期范围
- c# - asp.net core 向 startup.cs 添加启动扩展时遇到问题
- visual-studio - Visual Studio 2019 中的旧项目创建对话框
- amazon-web-services - 防止 CPUCreditBalance 警报在 ec2 实例启动时触发
- neural-network - 手写字符识别区分正斜杠“/”和1?