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

时间:2018-06-27 20:33:43

标签: java android json gson

我正在构建一个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的实例可以在PerformedExercise中共享相同的List<PerformedExercise>。在我的代码中,它们是对PerformedExercise实例的引用。当我的代码序列化和反序列化时,我需要能够保留对这些PerformedExercise的引用。这怎么可能?

1 个答案:

答案 0 :(得分:0)

您需要为数据库创建单独的WorkoutDB模型,在该模型中您将使用对象列表 包含原始类型列表,例如儿童锻炼列表

例如:

public class WorkoutDB {
    private UUID mId;
    private Date mStartDate;
    private Date mEndDate;

    //list of Ids
    private List<String> mIdsExercises;
    private String mNotes;
}

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