我目前正在开发一个项目,该项目需要保留任何类型的对象(我们无法控制其实现),以便之后可以恢复这些对象。
我们无法实现 ORM,因为我们无法在开发时限制库的用户。
我们的第一个替代方案是使用 Java 默认序列化对其进行序列化,但是当用户开始传递同一对象的不同版本(属性更改类型、名称等)时,我们在恢复对象时遇到了很多麻烦。
我们尝试过使用 XMLEncoder 类(将对象转换为 XML),但我们发现缺少功能(例如不支持 Enums)。
最后,我们还尝试了 JAXB,但这迫使我们的用户注释他们的类。
有什么好的选择吗?
最佳答案
现在是 2011 年,在商业级 REST Web 服务项目中,我们使用以下序列化程序为客户提供各种媒体类型:
- XStream (适用于 XML,但不适用于 JSON)
- Jackson (对于 JSON)
- Kryo (一种快速、紧凑的二进制序列化格式)
- Smile (Jackson 1.6 及更高版本附带的二进制格式)。
- Java 对象序列化。
我们最近尝试了其他序列化器:
Jackson JSON、Kryo 和 Jackson Smile 都比旧的 Java 对象序列化快得多,大约快 3 到 4.5 倍。 XStream 速度较慢。但在这一点上,这些都是可靠的选择。我们将继续监视其他三个。
关于java - 哪个是 Java 序列化的最佳替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/239280/