我有一个已经序列化并存储为.ser格式文件的java类,但我希望将其转换为json文件(.json格式),这是因为序列化在直接附加方面似乎效率低下,并且由于流中断错误导致文件损坏。是否有可能将此java序列化文件转换为json格式的有效方法。
答案 0 :(得分:1)
您可以将.ser
文件作为InputStream
阅读,并使用Gson将收到的对象与key/value
对齐,并写入.json
文件
InputStream ins = new ObjectInputStream(new FileInputStream("c:\\student.ser"));
Student student = (Student) ins.readObject();
Gson gson = new Gson();
// convert java object to JSON format,
// and returned as JSON formatted string
String json = gson.toJson(student );
try {
//write converted json data to a file named "file.json"
FileWriter writer = new FileWriter("c:\\file.json");
writer.write(json);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
答案 1 :(得分:1)
在Java中没有标准的方法可以做到这一点,也没有灵丹妙药 - 这里有很多库。我更喜欢杰克逊https://github.com/FasterXML/jackson
ObjectMapper mapper = new ObjectMapper();
// object == ??? read from *.ser
String s = mapper.writeValueAsString(object);
您可以在此处查看JSON序列化/反序列化的库列表(适用于java而不仅仅适用于java)http://json.org/
这是因为序列化在直接附加方面似乎效率低下
不确定JSON是否适合您。您能否与我们分享一些数据示例以及您使用它进行的操作?
答案 2 :(得分:0)
您可以尝试使用Google Protocol Buffers作为Java序列化和JSON的替代方法。
在下面的主题回答中,概述了GPB是什么以及如何使用,因此您可以检查并查看它是否适合您: