Java.lang.ClassCastException: java.lang.Boolean нельзя преобразовать в java.util.Map

Я получаю сообщение об ошибке в этой строке: «Map map = (Map) dataSnapshot.getValue ();»

     private void getAssignedCustomer(){
    String driverId = FirebaseAuth.getInstance().getCurrentUser().getUid();
    DatabaseReference assignedCustomerRef = FirebaseDatabase.getInstance().getReference().child("Users").child("Drivers").child(driverId);
    assignedCustomerRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()){

                Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();

                if (map.get("customerRideId") != null){
                    customerId = map.get("customerRideId").toString();
                    getAssignedCustomerPickupLocation();
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
}

Как избавиться от этой ошибки ???

Поделиться кодом класса "DataSnapshot".

Aditya Narayan Dixit 05.12.2018 14:50

где мне это достать? import com.google.firebase.database.DataSnapshot;

iGeni 05.12.2018 15:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
2 871
3

Ответы 3

Цитата из документации Firebase:

getValue() returns the data contained in this snapshot as native types. The possible types returned are:

Boolean

String

Long

Double

Map

List

This list is recursive; the possible types for Object in the above list is given by the same list. These types correspond to the types available in JSON.

Значение, возвращаемое из dataSnapshot.getValue(), похоже, Логический, и его нельзя точно присвоить Map<String, Object>.

Убедитесь, что вы используете правильные данные из dataSnapshot.

Пожалуйста, проверьте этот код

if (dataSnapshot.getValue() != null) {
  String avataStr = (String) dataSnapshot.getValue();
}

Сначала проверьте в своей базе данных firebase, что значение для ключевого driverS, которое вы пытаетесь получить в узле Users / Drivers, не является логическим.

Другие вопросы по теме