编辑:想出来了,如果你有类似的问题,检查我发布的答案。
我知道关于这个问题有几个问题,但他们的解决方案都不适合我。
在我的模型类中,我确保使用List而不是Arraylist来避免Firebase问题,但我仍然收到这个错误。这是很多代码,但大多数问题都要求所有代码,所以我将全部发布。
TemplateModelClass。Java语言
//
我已经成功地使用了这个基本模型很多次。对于
HashMaps<String, List<String>>,
字符串是转换为字符串的递增整数。列表只是列表中的字符串。以下是来自Firebase的一些JSON示例:
//
尽我所能格式化它。如果你需要它的图片,请告诉我,我会得到截图
我得到了这个错误,如标题所述:
com.google.firebase.database.DatabaseException: Expected a Map while deserializing, but got a class java.util.ArrayList
关于这一点,投票最多的问题似乎与使用整数作为键的问题有关,但我认为我总是使用转换为字符串的整数来避免这个问题。它可能会解释得很奇怪,所以我会在这期间尝试更多的东西。感谢阅读!
主要问题是您使用的是列表,而不是地图。正如您的错误所述,反序列化时需要一个映射,但找到的是一个数组列表。
因此,为了解决这个问题,您需要使用如下地图更改模型中的所有列表:
private Map<String, Object> mMapOne;
在像这样更改所有这些文件之后,您还需要更改公共设置器和获取器。
希望有帮助。
好吧,想出来了。如果阅读本文的人有这个问题,并且正在使用增量int/long/任何转换为字符串的东西,您必须在转换后的int中添加一些字符。如果可以转换,Firebase显然会将这些键转换回非字符串。
例如,如果您这样做:
int inc = 0;
inc++; // 1
map.put(String.valueOf(inc), someList);
Firebase将该键解释为1,而不是“1”。
因此,要强制Fb将其作为字符串进行intepret,请执行以下操作:
int inc = 0;
inc++; // 1
map.put(String.valueOf(inc) + "_key", someList);
一切都很顺利。显然,如果您还需要将这些字符串读回int,只需使用“[\u]”拆分字符串,就可以了。
“在反序列化时映射,但得到了一个类”异常。 我一直在四处查看,甚至使用更改所有模型immementation,而根本不使用任何,但仍然得到了相同的结果。 以下是我的模型: 感谢所有的评论和回答!
可以序列化/反序列化< code >映射吗 在这种特殊情况下,我知道总是,和 - 第三方类(我有序列化器和反序列化器),其他值是盒装原语。 有可能和杰克逊做这样的事吗?使用MapSerializer/MapDeserializer可以做到这一点吗?(我找不到任何例子)
我对Jackson有一个错误的理解,就是将json文件反序列化为poco。这是我的代码: 我的POCO命名为AnimalBean: }还有我的JSON文件: } 当我执行我的代码时,我有以下错误:未识别的字段“动物园”(类动画豆),未标记为可忽略的。我知道问题是我的json文件开始不直接由动物,但我不能改变它,因为它不是我的。我已经尝试把对象apper.configure(Deseriazatio
我的POJO是:
目前,我正在使用Avro1.8.0序列化/反序列化对象,但面临一些问题,特别是java.util.Map对象。不面临其他类型对象的问题。 这里的示例代码- 在deserialize方法中,我试图根据输入数据获取模式,但avro抛出错误- 多谢了。