【发布时间】:2010-07-21 16:14:05
【问题描述】:
我有一个复杂的 Clojure 数据结构,我想序列化 - 基本上是我正在开发的在线游戏的整个当前游戏状态,以便我可以实现保存游戏文件。
我的要求是:
- 某种形式的人类可读文本格式(我可能更喜欢按顺序排列的 s 表达式、JSON 和 XML,但对其他人开放)
- 支持所有常用的 Clojure 数据结构、关键字和原语
- 能够为自定义 java 类、defrecords 等提供自定义序列化/反序列化功能(这很重要,因为在某些情况下我需要执行 Java 的 readResolve 之类的操作)
- 良好的性能是值得拥有的
有什么好的推荐吗?
【问题讨论】:
-
在对 Clojure 了解不多的情况下,是否有理由使用从 Clojure 调用的标准 Java 序列化机制无法实现这一点?
-
@Gian - 是的,这当然是可能的,但我正在尝试学习做事的“Clojure 方式”:-)
-
IMO Clojure 的方式是使用 Java 的工具,它们为所解决的问题提供良好的解决方案。 :-)
Serializable可能是短期存储/传输数据结构的好解决方案。话虽如此,我想对于这个用例,需要一种更适合长期存储的格式,这可能由print-dup提供。 (例如,如果实现核心 Clojure 数据结构的类的结构发生变化,Serializable可能会遇到问题;print-dup可能不会。)
标签: java serialization clojure