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