Firebase到自定义Java对象

And*_*eng 4 android firebase firebase-realtime-database

{
  "users": {
    "mchen": {
      "friends": { "brinchen": true },
      "name": "Mary Chen",
      "widgets": { "one": true, "three": true }
    },
    "brinchen": { ... },
    "hmadi": { ... }
  }
}
Run Code Online (Sandbox Code Playgroud)

如何为上面的例子编写自定义对象类?Firebase中的指南仅显示简单示例.

Fra*_*len 9

像往常一样,您需要一个Java类,它将每个属性从JSON映射到字段+ getter:

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 +
                '}';
    }
}
Run Code Online (Sandbox Code Playgroud)

我真的只是按照Firebase指南中的这些说明来阅读Android上的数据:

我们将创建一个代表Blog Post的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));
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

有了这个输出:

brinchen:用户{name ='Brin Chen',friends = {mchen = true,hmadi = true},widgets = {one = true,three = true,two = true}}

hmadi:用户{name ='Horace Madi',friends = {brinchen = true},widgets = {one = true,two = true}}

mchen:用户{name ='Mary Chen',friends = {brinchen = true},widgets = {one = true,three = true}}