如何将Firebase数据转换为自定义Java对象?

时间:2019-04-22 19:33:45

标签: java android firebase firebase-realtime-database

我一直在阅读Firebase文档,但仅显示了简单的示例。我需要做的是从数据库的根中获取所有数据,并将其存储到一组自定义Java对象中(目前,我只是试图将一个调查收集到一个对象中)。根的每个子代都是一个Survey,而我有一个部分设置为接收数据的类。

我了解我使用以下代码:

mDatabase.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
            Survey s = childSnapshot.getValue(Survey.class);
            s.toString();
        }
    }

这是我的Survey.java类。我不确定确切如何在Firebase中反映Survey对象的结构:

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;

/*  This class stores one survey from the database  */
public class Survey implements Serializable {
    String name;
    String company;
    String description;
    String num_questions;
    String user;
    //HashMap<String,ArrayList<String>> question_strings; // Stores question title as key, with an arraylist of answer choices as the value

    public Survey() { }

    public Survey(String name, String company, String description, HashMap<String,ArrayList<String>> question_strings)
    {
        this.name = name;
        this.company = company;
        this.description = description;
        //this.question_strings = question_strings;
    }

    public void setName(String name) { this.name = name; }
    public void setCompany(String company) { this.company = company;}
    public void setDescription(String description) { this.description = description;}
    public void setNumQuestions(String num) { this.num_questions = num;}
    public void setUser(String user) { this.user = user;}

    public String getName() { return this.name;}
    public String getCompany() { return this.company;}
    public String getDescription() { return this.description;}
    public String getNumQuestions() { return this.num_questions;}
    public String getUser() { return this.user;}

public String toString()
{
    System.out.println("Name: " + name);
    System.out.println("Company: " + company);
    System.out.println("Description: " + description);
    System.out.println("Num questions: " + num_questions);


    return "";
}

}

最后,这是一个截图,显示了数据库中对象的结构: enter image description here

我应该如何构造Survey类以与Firebase一起使用?

2 个答案:

答案 0 :(得分:1)

对我来说,

question_answers像是List<List<String>>。你试过了吗?

答案 1 :(得分:-1)

从我所看到的:

公司是一个字符串

说明是一个字符串

名称是一个字符串

num_questions是一个整数

用户是一个字符串

SurveryId很长

question_answers有点复杂。但这似乎是字符串列表。所以列表>。

PS num_questions似乎是多余的,因为您已经可以通过question_answers列表的大小来知道问题的数量。