【发布时间】:2013-03-07 07:11:30
【问题描述】:
我已成功开始使用 GSON 对我的 Android 应用程序中的对象层次结构进行序列化和反序列化。
一些被序列化的对象具有我必须标记为transient 的成员(或者使用替代的 GSON 注释来防止它们被序列化),因为它们是对我不想作为输出的一部分进行序列化的对象的引用JSON 字符串。这些引用指向必须通过其他方式单独构造的对象。
一旦结构被反序列化回 Java 对象,在某些时候我需要填写这些引用。我可以通过使用一系列setXXX() 类型的方法轻松地做到这一点,但在完成之前,这些对象处于不完整状态。因此,我想知道是否有更强大的方法来解决这个问题。
到目前为止我想到的方法:
如果对象处于不完整状态,则让它们抛出
RuntimeException(或更合适的东西);也就是说,如果在未调用某些初始化方法时要求他们做一些工作。将可序列化位分离到单独的数据模型对象中。也就是说,把不能序列化的东西拿出来。在 GSON 反序列化之后,使用组合中的这些数据对象构建我的“真实”对象。这似乎在某种程度上破坏了使用 GSON 的便利性。
为 GSON 编写一个自定义反序列化程序来处理这些对象的特殊创建。
【问题讨论】: