如何将java序列化文件转换为json文件

时间:2015-06-21 17:32:24

标签: java json serialization

我有一个已经序列化并存储为.ser格式文件的java类,但我希望将其转换为json文件(.json格式),这是因为序列化在直接附加方面似乎效率低下,并且由于流中断错误导致文件损坏。是否有可能将此java序列化文件转换为json格式的有效方法。

3 个答案:

答案 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是什么以及如何使用,因此您可以检查并查看它是否适合您:

How to write/read binary files that represent objects?