将java对象序列化为文本文件
我有一个java库,我想将一个java对象的实例保存到一个文本文件中。 我试图使用所有java库进行序列化和反序列化到xml: http://karussell.wordpress.com/2009/09/03/xml-serializers-for-java/
: http://karussell.wordpress.com/2009/09/03/xml-serializers-for-java/
但反序列化不起作用。 我在这里发布了一个问题: http://stackoverflow.com/questions/6139702/deserializing-xml-file-from-xstream
: http://stackoverflow.com/questions/6139702/deserializing-xml-file-from-xstream
但似乎我无法得到解决方案。
我也尝试序列化为json
但是从json反序列化不起作用。
所以,我想知道apart of serializing to xml and json
,是否有任何其他方法可以从java对象进行序列化和反序列化(无法修改以添加标记: @XmlRootElement(name="customer")
)到文本文件?
提前致谢!
最简单的方法可能是使用本机Java序列化。 它将生成对象的二进制表示,但您可以使用Base64对生成的字节数组进行编码,以将其转换为文本:
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(myObject); oos.flush(); byte[] binary = baos.toByteArray(); String text = Base64.encodeBase64String(binary); // Base64 is in the apache commons codec library // save text to a file
请注意,对象及其引用的每个对象(递归地)必须实现java.io.Serializable
才能使其正常工作。
您可以使用Gson将Java对象转换为Json,反之亦然
以下是Gson用户指南中的示例 。
或者可能是apache digester可以提供帮助。