将java对象序列化为文本文件

时间:2011-05-28 09:45:38

标签: java

我有一个java库,我想将一个java对象的实例保存到一个文本文件中。我试图使用所有java库进行序列化和反序列化到xml:http://karussell.wordpress.com/2009/09/03/xml-serializers-for-java/,但反序列化不起作用。我在这里发了一个问题:http://stackoverflow.com/questions/6139702/deserializing-xml-file-from-xstream但似乎我无法得到解决方案。

我也尝试序列化为json但是从json反序列化不起作用。

所以,我想知道apart of serializing to xml and json,有没有其他方法可以从java对象进行序列化和反序列化(无法修改以添加标签:@XmlRootElement(name="customer"))到文本文件?

提前致谢!

2 个答案:

答案 0 :(得分:5)

最简单的方法可能是使用本机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才能使其生效。

答案 1 :(得分:1)

您可以使用Gson将Java对象转换为Json,反之亦然

以下是Gson用户指南中的example

或者apache digester可以提供帮助。