【问题标题】:How to get this type of pattern from firebase android如何从firebase android获取这种类型的模式
【发布时间】:2021-06-26 14:24:48
【问题描述】:

我正在尝试从 Firebase 获取帐户数据,请注意帐户可以是多个帐户,例如用户可以存储多个帐户详细信息,因此我需要从此模式中获取所有帐户详细信息

目前写的代码

myRef = FirebaseDatabase.getInstance().getReference("users");
mUserList = new ArrayList<>();
        myRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot valueRes : dataSnapshot.getChildren()){
                    User user = valueRes.getValue(User.class);
                    mUserList.add(user);
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

以下是我从上面的代码中得到的错误 com.google.firebase.database.DatabaseException:反序列化时需要一个列表,但得到一个类 java.util.HashMap

User 类由一个账户数组列表组成!

【问题讨论】:

  • 您在问题中包含了 JSON 树的图片。请将其替换为实际的 JSON 作为文本,您可以通过单击 your Firebase Database console 的溢出菜单 (⠇) 中的 Export JSON 链接轻松获得。将 JSON 作为文本使其可搜索,让我们可以轻松地使用它来测试您的实际数据并在我们的答案中使用它,一般来说这只是一件好事。
  • 我没有立即看出您共享的代码有什么问题。您收到错误消息了吗?
  • @FrankvanPuffelen 我现在将更新问题是的,我收到此错误 com.google.firebase.database.DatabaseException: Expected a List while deserializing, but got a class java.util.HashMap

标签: android firebase firebase-realtime-database


【解决方案1】:

您的User 类中似乎有一个List&lt;UserAccount&gt; accounts 字段。虽然accounts 下的数据乍一看可能看起来像一个列表,但它实际上是数据库中的Map:一组键/值对(-Md7... ` 是关键)。

因此您需要将类型更改为:

Map<String, UserAccount> accounts

【讨论】:

    猜你喜欢
    • 2020-09-09
    • 2021-07-02
    • 2013-05-22
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    相关资源
    最近更新 更多