Skip to content Skip to sidebar Skip to footer

Com.google.firebase.database.databaseexception: Serializing Arrays Is Not Supported, Please Use Lists Instead

I am trying to persist a custom object using the following code: DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference(); DatabaseReference curWorkoutEx

Solution 1:

I've managed to find the reason causing this crash. I installed the app on another device running Android 5.x and Firebase threw a much less confusing exception there:

com.google.firebase.database.DatabaseException: No properties to serialize found onclass android.graphics.Paint$Align

It appeared that Firebase (unlike Gson) tries to serialize all possible getters even though they don't have direct connection with global variables (class members / fields), in my particular case one of my objects contained a method returning Drawable - getDrawable(). Obviously, Firebase doesn't know how to convert drawable into json.

Interesting moment (probably a bug in Firebase SDK): on my older device running Android 4.4.1 I still get my original exception in the same project and configuration:

Caused by: com.google.firebase.database.DatabaseException: Serializing Arrays isnot supported, please use Lists instead

Solution 2:

In case this helps others that are receiving the same error, I was getting the same error and the solution ended up being the following for me:

Changing:

databaseReference.child("somechild").setValue(etName.getText());

To:

databaseReference.child("somechild").setValue(etName.getText().toString());

As @fraggjkee points out, Firebase attempts to serialize getters, and this was the similar issue here with firebase attempting to serialize the result of the .getText().

Hope this helps others!

Solution 3:

Add @Exclude to the functions that FB tries to interpret, like those that return a Drawable.

@ExcludepublicDrawablegetUnitColorImage(){
    returnTextDrawable.builder().buildRound("", prefColor);
}

Solution 4:

I had a similar problem, I was trying to use groovy instead of Java, I guess that groovy is generating other get methods for me. I converted my domain class from Pogo (src/main/groovy) to Pojo (src/main/java) and now all is working well

Solution 5:

Add @IgnoreExtraProperties to your class

@IgnoreExtraProperties
publicclassYourPojo {
    public String name;

    // Default constructor for FirebasepublicYourPojo(){} 

    // Normal constructorpublicYourPojo(String name) {
        this.name = name;   
    }
}

Post a Comment for "Com.google.firebase.database.databaseexception: Serializing Arrays Is Not Supported, Please Use Lists Instead"