java - 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
可以PerformedExercise
在List<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 列表获得所有锻炼。
推荐阅读
- angular - 为什么不只使用两种方式的数据绑定?
- pandas - 当列包含某些文本时,将所有列值连接到 1 列
- c# - 我可以使用 C# 中另一个方法内部的 foreach 循环中的方法链接来调用方法吗?
- elasticsearch - 在 Elasticsearch 中索引字符串的最后一个单词
- if-statement - 为什么“在技术科学中”命题逻辑会接受如果 P = FALSE 那么 Q = TRUE = TRUE?
- java - 如何从 java 代码向 SSH 服务器发送键盘功能键
- regex - 只取开头有 doller 符号的行
- amazon-web-services - 预留 AWS EC2 超过 3 年
- reactjs - 有人可以帮我这个 React 开始吗?
- laravel - 如何在没有 php 序列化的情况下使用 laravel 将原始 json 字符串存储在 redis 缓存中?