java如何检索firebase数据中的嵌套对象
我正在尝试检索下一张照片中的数据
下面是o从Firebase文档中得到的信息
mCoursesChild.child("Courses").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot data : dataSnapshot.getChildren()) {
Course temp = data.getValue(Course.class);
courses.add(temp));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
“课程”被定义为ArrayList
ArrayList<Course> courses = new ArrayList<>();
这是课程
public class Course {
private String mCourseName;
List<Subject> mSubjects;
public Course(){} // Default constructor required for calls to DataSnapshot.getValue(Course.class)
public Course(String CourseName){
mCourseName = CourseName;
}
public String getcourseName(){
return mCourseName;
}
public List<Subject> getSubjects(){ return mSubjects; }
}
显然有问题,那么数据的价值是什么呢。getValue(Course.class)返回值? 还是我把数据库写错了
PS:我正在手动编写数据库对象
# 1 楼答案
我发现您的代码与JSON属性的命名有一些不匹配。Firebase遵循JavaBean属性命名约定,这意味着这个getter:
映射到名为
subjects
的属性。在JSON中,属性名为Subjects
,这不匹配。要解决此问题,请在JSON中拼写subjects
,或注释getter:除此之外,正如阿纳斯评论的那样:Firebase文档和专家建议通过将JSON的每个分支限制为单一类型来保持数据结构的扁平化
在你的情况下,这意味着我建议保留三个独立的顶级列表:
如果对课程使用相同的键,则仍然会将课程与课程关联:
这将更容易: