像往常一样,你需要从JSON每个属性映射到一个字段+吸气的Java类:
static class User {
String name;
Map<String, Boolean> friends;
Map<String, Boolean> widgets;
public User() { }
public String getName() { return name; }
public Map<String, Boolean> getFriends() { return friends; }
public Map<String, Boolean> getWidgets() { return widgets; }
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", friends=" + friends +
", widgets=" + widgets +
'}';
}
}
我真的只是跟着从Firebase guide on reading data on Android这些指令:
我们”将创建一个代表博客文章的Java类。像上次一样,我们必须确保我们的字段名称与Firebase数据库中的属性名称相匹配,并为该类提供默认的无参数构造函数。
然后你就可以加载像这样的信息:
Firebase ref = new Firebase("https://stackoverflow.firebaseio.com/34882779/users");
ref.addListenerForSingleValueEvent(new ValueEventListenerBase() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
System.out.println(userSnapshot.getKey()+": "+userSnapshot.getValue(User.class));
}
}
});
有了这个输出:
brinchen:用户{名= '布林陈',朋友= {mchen =真, hmadi = true},widgets = {one = true,three = true,two = true}}
hmadi:User {name ='Horace Madi',friends = {brinchen = true},widgets = {one = true ,two = true}}
mchen:用户{名= '玛丽陈',朋友= {brinchen =真},窗口小部件= {一个= TRUE,三=真}}
非常感谢您的详细解释,你能不能请进一步解释为什么我们需要重写toString()?是否因为对象包含具有列表的子项?我是初学者,感谢您的解释。以前我认为需要使用它来包含一个列表。 '列表<地图<字符串,布尔>>朋友'然后我没有绑定到输入错误。 –
不需要重写'toString()',只是它使得日志输出更具可读性。下一次当你有代码不起作用时:在你的问题中发布代码。它会减少下/收票。 –
好的指出,谢谢你的建议:) –