从firebase实时数据库获取数据的源码:
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("hotel");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String value = dataSnapshot.getValue(String.class);
Log.d(TAG, "Value is: " + value);
}
@Override
public void onCancelled(DatabaseError error) {
Log.w(TAG, "Failed to read value.", error.toException());
}
});
它说错误是这样的:
com.google.firebase.database.DatabaseException: Failed to convert value of type java.util.HashMap to String
我试过一些教程,但找不到。另外,我试试这个:
HashMap value = DataSnapshot.getValue(HashMap.class);
结果也是报错。我应该如何呈现此 HashMap 数据?
最佳答案
您正在获取 HashMap 的 String 作为键和 Object 作为值,因此将其映射到如下所示的内容中。
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
Log.d(TAG, "Value is: " + map);
}
@Override
public void onCancelled(DatabaseError error) {
Log.w(TAG, "Failed to read value.", error.toException());
}
});
或者我们可以将其解析为某个模型而不是对象。
更新 用这个来解析
Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
关于java - 无法将 java.util.HashMap 类型的值转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47535376/