首页 > 解决方案 > firebase.database.DatabaseException:反序列化时需要一个 Map,但得到一个类 java.util.ArrayList

问题描述

数据库结构图

我收到这个错误说

com.google.firebase.database.DatabaseException:反序列化时需要一个 Map,但得到了一个类 java.util.ArrayList

我尝试了一些来自解决 方案 1 解决方案 2 等的解决方案,再加上几个小时的谷歌搜索,但我没有得到任何可行的解决方案。

所以请任何人都可以帮助我理解这个firebase结构数据库结构图像及其解决方案。

这是我的示例代码

类别对象类

public class Category {
    private String link;
    private String categoryName;
    private String activeJob;
    private Map<String, JobList> jobList;

    ....

    public Map<String, JobList> getJobList() {
        return jobList;
    }

    public void setJobList(Map<String, JobList> jobList) {
        this.jobList = jobList;
    }
}

作业列表对象类

public class JobList {
    private String employerName;
    private String jobClosingDate;
    private String jobCode;
    private String jobTitle;
    private String jobLink;
    private String status;
    private String updatedDate;

在 MainActivity

public void getJobListFromFirebase() {
        ChildEventListener childEventListener = new ChildEventListener() {
            @Override
            public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

                categories = dataSnapshot.getValue(Category.class);
            }
            @Override
            public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

            }
            .......

标签: javaandroidfirebase

解决方案


将您的课程更改category为:

    private String link;
    private String categoryName;
    private String activeJob;
    private List<JobList> jobList;

    ....

    public List<JobList> getJobList() {
        return jobList;
    }

    public void setJobList(List<JobList> jobList) {
        this.jobList = jobList;
    }
}

从您的数据库结构中,我们可以做类似List<JobList>Map<Int,JobList>(不是Map<String,JobList>)的事情。试试这个,让我知道。


推荐阅读