gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:04 26 4
gpt4 key购买 nike

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

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com