【问题标题】:Firebase Error: "Expected a List while deserializing, but got a class java.util.HashMap"Firebase 错误:“反序列化时需要一个列表,但有一个类 java.util.HashMap”
【发布时间】:2018-12-30 17:37:15
【问题描述】:

我的数据库中有一个运行良好的结构,但随后我将以下节点添加到我的数据库中,从那时起我就收到了这个错误。如果我删除“commentList”节点,它会再次工作。为什么会从列表变成Hashmap?

My db structure. It worked before adding that "commentList"

负责此的代码: code

这里的日志错误:

com.google.firebase.database.DatabaseException: Expected a List while deserializing, but got a class java.util.HashMap
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToParameterizedType(com.google.firebase:firebase-database@@16.0.5:233)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToType(com.google.firebase:firebase-database@@16.0.5:176)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.access$100(com.google.firebase:firebase-database@@16.0.5:47)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.deserialize(com.google.firebase:firebase-database@@16.0.5:580)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.deserialize(com.google.firebase:firebase-database@@16.0.5:550)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(com.google.firebase:firebase-database@@16.0.5:420)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(com.google.firebase:firebase-database@@16.0.5:214)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToType(com.google.firebase:firebase-database@@16.0.5:178)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.access$100(com.google.firebase:firebase-database@@16.0.5:47)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.deserialize(com.google.firebase:firebase-database@@16.0.5:580)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper$BeanMapper.deserialize(com.google.firebase:firebase-database@@16.0.5:550)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertBean(com.google.firebase:firebase-database@@16.0.5:420)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToClass(com.google.firebase:firebase-database@@16.0.5:214)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToType(com.google.firebase:firebase-database@@16.0.5:178)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToParameterizedType(com.google.firebase:firebase-database@@16.0.5:247)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.deserializeToType(com.google.firebase:firebase-database@@16.0.5:176)
    at com.google.firebase.database.core.utilities.encoding.CustomClassMapper.convertToCustomClass(com.google.firebase:firebase-database@@16.0.5:101)
    at com.google.firebase.database.DataSnapshot.getValue(com.google.firebase:firebase-database@@16.0.5:239)
    at com.example.xandi.whib.MainActivity$3.onDataChange(MainActivity.java:236)
    at com.google.firebase.database.core.ValueEventRegistration.fireEvent(com.google.firebase:firebase-database@@16.0.5:75)
    at com.google.firebase.database.core.view.DataEvent.fire(com.google.firebase:firebase-database@@16.0.5:63)
    at com.google.firebase.database.core.view.EventRaiser$1.run(com.google.firebase:firebase-database@@16.0.5:55)
    at android.os.Handler.handleCallback(Handler.java:790)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6626)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)

这是什么原因造成的,我该如何解决?

【问题讨论】:

  • 请不要发布代码图片。最好将代码文本复制到问题中,并使用代码块对其进行格式化,这样更易​​于阅读和搜索。我们理解问题所需的一切都应该直接存在于问题本身中,而不是链接到其他地方。
  • 能否请您发布代码。这样我们就可以干调试代码了。
  • 欢迎来到 Stack Overflow。请阅读How to Askminimal reproducible example
  • 代码示例在这里肯定会有所帮助。
  • 你的服务器类有问题

标签: java android arraylist firebase-realtime-database hashmap


【解决方案1】:

您必须确保 firebase 对象是数组,而不是映射,如下所示: firebase

我也遇到了同样的问题,解决方法是检查对象的类型,直接在firebase数据库中,将Map(HashMap)改为Array(List)

【讨论】:

  • 欢迎来到 SO!请尝试解释您的答案。
  • 所以改进你的答案:编辑它并添加你的评论
猜你喜欢
  • 2021-08-24
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
  • 2017-10-17
  • 2017-10-11
  • 2021-07-08
相关资源
最近更新 更多