我有一个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")
)到文本文件?
提前致谢!
答案 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)