2010-05-11 29 views
0

我目前使用XStream来序列化一些不执行Serializable的对象。有没有办法告诉XStream使用Java的默认序列化,如果对象没有实现Serializable,并且如果没有实现则返回XML序列化?或者我需要在它上面实现一个简单的图层来检查?XStream可串行化对象

感谢, 杰夫

回答

1

这不会是一个好主意。 Java序列化是二进制表示,XML是文本表示。

java.lang.String为例。这实现了Serializable,但显然你不希望你的字符串在你的XML中被串行化为二进制blob。类似的数字类型等东西

XStream有一个注册自定义转换器的机制,我建议你使用它。如果您选择将二进制数据序列化到XML文档中,则需要以某种方式对其进行编码,例如,使用Base64编码。

+0

很好的解释。我并不是真的想把它应用到整个对象图中。例如,如果我尝试序列化类X并且它是Serializable,那么我会将它(及其整个对象图)序列化为二进制文件(因为它被标记为Serializable,我将假定它的对象图也是)。如果它没有标记为Serializable,我会使用xml作为该对象(及其整个对象图)。原因在于我有很多不同的对象,我正在为持久性而序列化,但有些对象具有很大的XML表示形式,而对于那些我希望以另一种格式存储的数据类型。 – 2010-05-11 14:45:39