无法将java.util.HashMap类型的值转换为String

Rid*_*ido 2 java android firebase firebase-realtime-database

我不知道如何在logcat上呈现这个JSON:在此输入图像描述

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

它说错误是这样的:

com.google.firebase.database.DatabaseException:无法将java.util.HashMap类型的值转换为String

我试过一些教程,但我找不到一个.另外,我试试这个:

HashMap value = DataSnapshot.getValue(HashMap.class);
Run Code Online (Sandbox Code Playgroud)

它最终也出现了错误.我该如何渲染这个HashMap数据?

vik*_*mar 10

你得到的HashMap字符串作为重点和对象的值,因此它映射到类似下面.

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

或者我们可以将其解析为某个模型而不是对象.

update 使用它来解析

 Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();
Run Code Online (Sandbox Code Playgroud)