首页 > 解决方案 > 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 中序列化,然后存储。问题是Exercise和的实例Workout可以PerformedExerciseList<PerformedExercise>. 在我的代码中,它们是对PerformedExercise. PerformedExercise当我的代码被序列化和反序列化时,我需要能够保留对这些的引用。这怎么可能?

标签: javaandroidjsongson

解决方案


您需要为数据库创建单独的 WorkoutDB 模型,而不是对象列表,您将包含原始类型列表,例如孩子列表

例如:

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

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

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


推荐阅读