如何从Firebase取出存储的数据?

时间:2019-06-14 10:20:24

标签: java firebase firebase-realtime-database

我没有从Firebase数据库获得输出。它没有返回任何东西。这是我的数据结构。

我也尝试通过查询获取价值,但返回数据库错误:

  

无法将java.util.hashmap转换为String

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference().child("Member").push();

myRef.addValueEventListener(new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot dataSnapshot) {

          for (DataSnapshot ds : dataSnapshot.getChildren()) {

              String value = ds.getValue(String.class);
              Log.d("Tag", "Value is" + value);
          }
      }

JSON:

{
  "Member" : {
    "-LhKJVG1Tj2628sHPg4D" : {
      "age" : "21",
      "name" : "Gagan",
      "nickname" : "Gaggi"`enter code here`
    },
    "-LhKKaNFnPrrh1bQNPfH" : {
      "age" : "18",
      "name" : "Jashan",
      "nickname" : "Jassi"
    }
  }
}

2 个答案:

答案 0 :(得分:1)

您不能使用String.class调用getValue,因为它不满足方法调用的条件。

从文档中

public T getValue(Class valueType)

此方法用于将快照中包含的数据编组到您选择的类中。该类必须符合2个简单的约束: 该类必须具有不带参数的默认构造函数 该类必须为要分配的属性定义公共获取方法。反序列化实例时,没有公共获取器的属性将设置为其默认值 一个示例类可能看起来像:

 class Message {
     private String author;
     private String text;

     private Message() {}

     public Message(String author, String text) {
         this.author = author;
         this.text = text;
     }

     public String getAuthor() {
         return author;
     }

     public String getText() {
         return text;
     }
 }


 // Later
 Message m = snapshot.getValue(Message.class);

答案 1 :(得分:0)

您可以使用 String

FILE