序列化具有循环依赖关系的现有Java对象

时间:2017-12-28 23:08:00

标签: java serialization jax-rs

我有一个我无法修改的类的对象。

该对象具有循环依赖性。

我想序列化该对象,但我无法访问java源代码,因为它在库中。

在C ++中,我可以创建一个子类,覆盖虚拟方法,然后向下转换以获得所需的行为。在Java中,这是不可能的。

除了创建新的POJO类并手动复制每个字段外,我还有哪些选项?

2 个答案:

答案 0 :(得分:0)

无论如何,使用Serializable进行序列化有点臭。我更喜欢使用外部序列化程序,使用JSON(例如JacksonGSON)或二进制格式(例如Kryo)。无论哪种方式,您都可以在所有这些中编写自定义序列化程序来解决循环依赖关系。

答案 1 :(得分:0)

我选择Jackson,即使您是唯一一个读/写对象的人。许多优点,包括:

  1. 诊断/调试序列化的JSON可以简化生活。
  2. 坚持这条走得很好的道路意味着任何问题的解决方案都是谷歌的,例如,http://www.baeldung.com/jackson-deserialization