をリストを使用してください私は、次のコードを使用してカスタムオブジェクトを永続化しようとしています:com.google.firebase.database.DatabaseException:配列のシリアル化がサポートされていない、代わりに
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
DatabaseReference curWorkoutExercisesRef = databaseReference.child("workouts")
.child(mCurrentWorkout.getId())
.child("workoutExercises");
WorkoutExercise we = new WorkoutExercise(exercise);
curWorkoutExercisesRef.push().setValue(we);
は、ここに私のオブジェクトです:
com.google.firebase.database.DatabaseException: Serializing Arrays is not supported, please use Lists instead
から
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
// ...
}
そして毎回、私はこのエラーを取得しています。オブジェクトに配列が含まれていないので、このエラーはかなり混乱しています。私はこのエラーを修正する方法を発見した - 私は私のExercise
クラスからbodyParts
リストに@Exclude
注釈を追加しますが、それは私が達成しようとしているものを明らかでない場合はすべてが正常に動作します。
のでFirebaseは、内側のリストを含むオブジェクトを永続化することができないようですか?ここには簡単な回避策やベストプラクティスがありますか?ありがとう!
P.S.私はこのクラッシュの原因となる理由を見つけることができたfirebase-database:9.2.1
'firebase-database:9.2.1'で実行しているときに例外を再現することはできません。別のバージョンを使用していますか? –
@ qbix好奇心から:データベースに 'List'をシリアル化すると、どんなJSONが完成しますか? –
@FrankvanPuffelen:リストは配列としてシリアル化されます。 [JSONはこちら](https://gist.github.com/Bob-Snyder/034685d998fddd8d1bcc3d52c93d1877) –