java - 无法将 java.util.HashMap 类型的值转换为字符串

标签 java android firebase firebase-realtime-database

我不知道如何在 logcat 上呈现此 JSON:enter image description here

从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 数据?

最佳答案

您正在获取 HashMapString 作为键和 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/

相关文章:

Java程序阻塞端口?

android - react native : android emulator won't show up developer menu

android - SQlite 语法错误我不知道出了什么问题

firebase - Firestore DocumentReference可以在arrayUnion方法中传递吗?

java - 对 pow 的调用是模棱两可的

java - 包含带有 Jar 文件的属性文件

java - 旋转文档的单页

android - 构建错误 : Could not find any version that matches com. android.tools.build :transform-api:1. 5.+

android - 将文件上传到 Firebase 后如何获取文件 URL?

android - 最后在聊天应用程序中看到的替代实现