Json 可以保存对象引用还是只复制值?



我正在构建一个Android应用程序,可以将一些对象保存在数据库中。我的对象的一些属性首先在 Gson 的 Json 中序列化。问题是,我有一个Workout

public class Workout {
private UUID mId;
private Date mStartDate;
private Date mEndDate;
private List<PerformedExercise> mPerformedExercises;
private String mNotes;
}

和运动课

public class Exercise {
private UUID mId;
private String mName;
private String mCategory;
private List<PerformedExercise> mPerformedExercises;
}

这两个对象都将存储在数据库中。除List<PerformedExercise> 之外的所有内容都将保存为常规的基元类型。该列表将首先在 Json 中序列化,然后存储。问题是ExerciseWorkout的实例可以在List<PerformedExercise>中共享相同的PerformedExercise。在我的代码中,它们是对PerformedExercise实例的引用。当我的代码序列化和反序列化时,我需要能够保留对这些PerformedExercise的引用。这怎么可能?

您需要为数据库创建单独的 WorkoutDB 模型,而不是对象列表 包含基元类型的列表,如儿童练习列表

例如:

public class WorkoutDB {
private UUID mId;
private Date mStartDate;
private Date mEndDate;
//list of Ids
private List<String> mIdsExercises;
private String mNotes;
}

因此,从基地获得锻炼后,您可以通过 ids 列表获取所有锻炼。

最新更新