java - com.google.firebase.database.DatabaseException : Serializing Arrays is not supported, 请改用列表

标签 java android firebase firebase-realtime-database

我正在尝试使用以下代码保留自定义对象:

DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
DatabaseReference curWorkoutExercisesRef = databaseReference.child("workouts")
            .child(mCurrentWorkout.getId())
            .child("workoutExercises");

WorkoutExercise we = new WorkoutExercise(exercise);
curWorkoutExercisesRef.push().setValue(we);

这是我的对象:

public class WorkoutExercise {

    private String id;
    private Exercise exercise;

    public WorkoutExercise() {}

    // getters, setters, other methods 
    // ...
}

public class Exercise {

    private String id;
    private String title;

    private List<BodyPart> bodyParts;

    public Exercise() {}

    // getters, setters, other methods 
    // ...
}

public class BodyPart {

    private String id;
    private String name;

    public BodyPart() {}

    // getters, setters, other methods 
    // ...
}

每次我收到此错误 - com.google.firebase.database.DatabaseException:不支持序列化数组,请改用列表。我的对象不包含任何数组,所以这个错误看起来很困惑。我找到了修复此错误的方法 - 如果我将 @Exclude 注释添加到我的 Exercise 类的 bodyParts 列表中,一切正常,但它显然不是我想要达到的目标。

看来 Firebase 无法持久化包含内部列表的对象?这里有任何简单的解决方法或最佳实践吗?谢谢!

附言我正在使用 firebase-database:9.2.1

最佳答案

如果这有助于其他收到相同错误的人,我也遇到了同样的错误,最终解决方案对我来说如下:

改变:

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

收件人:

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

正如@fraggjkee 指出的那样,Firebase 尝试序列化 getter,这与 firebase 尝试序列化 .getText() 的结果的问题类似。

希望这对其他人有帮助!

关于java - com.google.firebase.database.DatabaseException : Serializing Arrays is not supported, 请改用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38673490/

相关文章:

java - 如果java对象中不存在属性(应忽略json元素),如何使用Jackson将Json反序列化为java对象?

java - Android Room 通过查询选择一行

Firebase + GTM + GA 实现问题

android - FirebaseRecyclerAdapter 无法将第一个布局识别为位置

android - 为 MultiUserChat 添加监听器 (aSmack)

android - 使用父文档中的子集合引用进行 Firestore 查询

java - Java Spring Boot bean 加载的详细日志记录?

java - 使用 Apache TIKA 获取页面的内容、关键字、标题

android - Google Nearby Connections 2.0 是否支持在模拟器上进行开发?

android - 我可以在 Android Studio 的模拟器中测试屏幕录制吗?